递归救援
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;