假设,我们需要编写一个递归函数,该求和函数将Numbers数组的所有元素相加,但有一个转折,而转折是我们编写的递归函数不能初始化任何额外的变量(内存)。
就像我们不能使用变量来存储总和或保持数组索引的计数一样,所有这些都必须使用我们已经拥有的变量。
这是解决方案-
我们已经有一个数组,可以使用它的第一个元素(即,索引为零的元素来保存递归和)。
方法是我们反复从数组中弹出一个元素,并将其添加到数组的第一个元素,直到只剩下一个元素。
当我们只剩下一个元素时,它将是数组的累加和,然后我们将其返回。该方法的代码将是-
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