JavaScript 中使用递归求数组和的修改版本


假设我们需要编写一个递归函数,用于对数字数组中的所有元素求和,但需要一个技巧,这个技巧是:我们编写的递归函数不能初始化任何额外的变量(内存)。

例如,我们不能使用变量来存储总和或记录数组索引,所有操作都必须使用我们已经拥有的内容。

以下是解决方案:

我们已经拥有一个数组,可以使用它的第一个元素(即索引为零的元素)来保存递归的总和。

方法是,我们重复地从数组中弹出元素,并将其添加到数组的第一个元素,直到只剩下一个元素为止。

当只剩下一个元素时,它将是数组的累积和,我们返回它。此方法的代码如下:

示例

const recursiveSum = arr => {
   if(arr.length > 1){
      arr[0] += arr.pop();
      return recursiveSum(arr);
   };
   return arr[0];
};
console.log(recursiveSum([1,2,3,4]));
console.log(recursiveSum([1,2,3,4,3,6,3,32,7,9,5]));
console.log(recursiveSum([]));

输出

控制台输出将是:

10
75
undefined

更新于: 2020年8月28日

258 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告
© . All rights reserved.