我正在freecodecamp上学习JS,目前正在使用递归课程进行替换循环,我几乎理解了它,但是他们告诉我的总和应该是我无法理解的答案。所以希望有人可以尝试解释发生了什么事?
function sum(arr, n) {
if (n <= 0) {
return 0;
}
else {
return sum(arr, n - 1) + arr[n - 1];
}
}
sum([2, 3, 4, 5], 3);
那是正确答案的代码,但显然总和应该等于9?
答案 0 :(得分:2)
我的调试过程将首先对其进行格式化,以便我知道循环和条件在何处开始和结束。然后手动编写至少3或4次迭代,直到获得流程为止。
function sum(arr, n) {
if (n <= 0) {
return 0;
} else {
return sum(arr, n - 1) + arr[n - 1];
}
}
sum([2, 3, 4, 5], 3);
sum([2, 3, 4, 5], 2) + 4
sum([2, 3, 4, 5], 1) + 3 + 4
sum([2, 3, 4, 5], 0) + 2 + 3 + 4
0 + 2 + 3 + 4
这意味着答案为 9