遞迴救援

function sum(numbers) {
    if(numbers.length == 0) {
        return 0;
    }
    return numbers[0] + sum(numbers.slice(1));
}

這是遞迴版本。沒有變異,但我們正在製作一個如下所示的呼叫堆疊,它使用額外的記憶體。

總和([10,5,6,7]);

10 +總和([5,6,7]);

10 + 5 +總和([6,7]);

10 + 5 + 6 +總和([7]);

10 + 5 + 6 + 7 + sum([]);

10 + 5 + 6 + 7 + 0;