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

recursive function return different values depending of order when summing array elements

本文关键字:返回 顺序 数组元素 求和 递归函数      更新时间:2023-09-26

我实现了以下递归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是全局的,在array[last]看到它之前,您将通过调用sumOfNumbers(array.slice(0,last))来更改它。