javascript - 递归函数在对数组元素求和时根据顺序返回不同的值

标签 javascript arrays recursion sum element

我实现了以下递归 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/

相关文章:

javascript - 水平边框渐变

javascript - Bootstrap 3 nav-pills,事件类仅在我单击分配的元素后才有效

javascript - 通过javascript中的对象数组过滤

java - 使用递归方法在两个字符串之间第一个不同字符的索引

java - 递归插入已排序的列表

javascript - 如何挂接到浏览器的上下文菜单事件

javascript - 通过 php/javascript 更改 href 的类

python - numpy einsum 获取轴置换

javascript - 如何捕获用户从此幻灯片中选择的图像的 'alt' 属性?

algorithm - 二叉树递归问题