Javascript 递归函数根据数组元素求和的顺序返回不同的值
我实现了下面的递归JS函数来获取数组中元素的总和。此函数工作正常,当输入[1,2,3]时返回6,这是正常的Javascript 递归函数根据数组元素求和的顺序返回不同的值,javascript,arrays,recursion,sum,elements,Javascript,Arrays,Recursion,Sum,Elements,我实现了下面的递归JS函数来获取数组中元素的总和。此函数工作正常,当输入[1,2,3]时返回6,这是正常的 function sumOfNumbers(array) { if (array.length == 1) { return array[0]; } else { last = array.length - 1; return array[last] + sumOfNumbers(array.slice(0, last));
function sumOfNumbers(array) {
if (array.length == 1) {
return array[0];
} else {
last = array.length - 1;
return array[last] + sumOfNumbers(array.slice(0, last));
}
}
但是,将总和的顺序更改为:
return sumOfNumbers(array.slice(0,last)) + array[last];
对于[1,2,3],它返回5。有人知道为什么吗?因为变量
last
是全局变量,您在调用sumOfNumbers(array.slice(0,last))
后,在这部分之前:array[last]
看到它。这实际上是真的,谢谢!我最后改成了var,并且在任何顺序下都能很好地工作。你为什么要递归地这样做呢?浪费内存,只需使用一个循环。不,我正在学习递归算法