寻找通过递归解决此问题的方法 sum()
。现在,代码有效,但我应该多次调用 sum()
,并且它不应该改变输入数组。
var sum = function(array) {
if(array.length === 0){
return 0;
}
function add(array, i){
console.log(array[i]);
if(i === array.length-1){
return array[i];
}
return array[i] + add(array, i+1);
}
return add(array, 0);
};
sum([1, 2, 3, 4, 5, 6]) //21
原文由 Wendy 发布,翻译遵循 CC BY-SA 4.0 许可协议
满足您所有要求的单线:
推理
sum
的结果 - 在某些时候,这些连续调用最终将导致调用sum([])
,您已经知道的答案。这正是上面代码所做的。array.slice(1)
从第一个元素开始创建数组的浅表副本,并且原始数组上不会发生任何突变。为了简洁起见,我使用了 三元表达式。分解: