我实现了以下递归 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));
}
}
但是,当将总和的顺序更改为:
return sumOfNumbers(array.slice(0,last)) + array[last];
它为 [1,2,3] 返回 5。有人知道为什么吗?
最佳答案
因为变量 last
是全局变量,并且您要通过调用 sumOfNumbers(array.slice(0,last))
来更改它,在这部分之前: array[last]
看到了。
关于javascript - 递归函数在对数组元素求和时根据顺序返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22967338/