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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP