在JavaScript中递归计算整数数组的和

在JavaScript中递归计算整数数组的和,javascript,function,recursion,methods,numerical-methods,Javascript,Function,Recursion,Methods,Numerical Methods,我想写一个JavaScript程序来递归地计算整数数组的和 预期结果 输入:[1,2,3,4,5,6] 输出:21 我使用此代码实现了上述结果: function calculateSum(array) { if (array instanceof Array){ if (!array.some(isNaN)) { var total = 0; array.forEach(function (value) {

我想写一个JavaScript程序来递归地计算整数数组的和

预期结果

输入:[1,2,3,4,5,6]
输出:21

我使用此代码实现了上述结果:

function calculateSum(array) {
    if (array instanceof Array){
        if (!array.some(isNaN)) {
            var total = 0;

            array.forEach(function (value) {
                total += value;
            });

            return total;
        }
        return "Provide an Array with only Numeric Values";
    }

    return "Please provide an Array";
}
但我正在寻找一种使用递归的解决方案

编辑:我开始做上面的练习来练习递归。我很难弄明白这一点。所以,这就是为什么我发布这个。如果你能理解我会很高兴的


提前感谢。

要使用递归,您只需要一个基本情况和方法,将输入拆分为可以递归的较小内容

长度为1的数组的和正好是
arr[0]
对吗?这是一个合理的基本情况。对于较大的数组,总和是一个元素加上所有其他元素的总和。这就是您的另一种情况:
arr[0]+sum(其他所有内容)

现在,您可以使用以下两种情况编写一个简单的函数:

让arr=[1,2,3,4,5,6]
功能添加(arr){
if(arr.length==1)返回arr[0]//基本大小写
返回arr[0]+add(arr.slice(1))//递归
}

console.log(add(arr))
递归实际上是一个回归问题, 如果名为“Arr”的数组只有一个元素-这是总和, 现在假设你知道N个元素数组的求和公式

现在可以使用递归查找(N+1)元素数组的和,因为 它只是最后一个元素加上你已经知道/计算过的前N个元素的总和

附上一个例子。 阅读更多信息

设arr=[10100100010000];
函数和(数组){
if(array.length==1){
返回数组[0];
}否则{
返回数组[array.length-1]+和(array.slice(0,array.length-1));
}
}

控制台日志(总和(arr))解构语法允许优雅的函数表达式

const无=
符号()
常量和=([n=None,…rest])=>
n==无
? 0
:n+总和(剩余)
console.log
(和([])//0
,sum([1])//1
,sum([1,2])//3
,sum([1,2,3])//6
,sum([1,2,3,4])//10
)
祝你好运

这是一个更适合初学者的解决方案:)
this is a more beginner-friendly solution :) 

// 2. Compute the sum of an array of integers.

var sum = function (array) {
  var total = 0;
  for (var n = 0; n < array.length; n++) {
    // terminating case
    if (n === array.length - 1) {
      //   console.log('last', total, array[n]);
      total = total + array[n];
    } else {
      // recursive case
      //   console.log('befoer ', total, array[n]);
      total = total + array[n] + sum(array[n + 1]);
    }
  }
  return total;
};
sum([1,2,3,4,5,6]); // 21
// 2. 计算整数数组的和。
var sum=函数(数组){
var合计=0;
对于(var n=0;n总和([1,2,3,4,5,6]);//21
您尝试过什么?您具体需要什么帮助?@Carcigenicate我想要一个使用递归的解决方案是的。你被困在哪里了?要求提供完整的解决方案太广泛了。展示您的尝试,并就您的困境提出具体问题。当
.reduce()
可以轻松完成您想要的任务时,为什么要使用递归?谢谢!这正是我想要的。
var numbers= [1,2,3,4,5,6];
sum=0;
function x(a,b){
  return a+b;
}
for (a in numbers){ 
 sum = x(numbers[a],sum);
 console.log(sum);
}
this is a more beginner-friendly solution :) 

// 2. Compute the sum of an array of integers.

var sum = function (array) {
  var total = 0;
  for (var n = 0; n < array.length; n++) {
    // terminating case
    if (n === array.length - 1) {
      //   console.log('last', total, array[n]);
      total = total + array[n];
    } else {
      // recursive case
      //   console.log('befoer ', total, array[n]);
      total = total + array[n] + sum(array[n + 1]);
    }
  }
  return total;
};
sum([1,2,3,4,5,6]); // 21