【发布时间】:2021-07-23 16:27:08
【问题描述】:
我正在尝试从 freecodecamp.org 学习一些 JavaScript,但偶然发现了一个我无法解决的递归问题:
说明:编写一个递归函数 sum(arr, n),它返回数组 arr 的前 n 个元素的和。
function sum(arr, n) {
if(n <= 0) {
return 0;
} else {
return sum(arr, n - 1) + arr[n - 1];
}
}
我明白了第二部分:arr[n -1] 添加项目值
但我不明白第一部分(sum(arr, n-1)) 做了什么,以及 arr 参数如何反应。
谁能帮忙?
感谢任何帮助!
【问题讨论】:
-
想象你有一个数组 [1,2,3,4,5],n = 3,所以你调用函数来创建堆栈,通过添加 arr[n-1],所以它是 1 step) + 3 2 step) +2 3 step) +1 然后你加 0,当 n=0 但你不明白的第一部分是通过递归 sum(arr, n - 1) 调用函数,所以你调用函数递减N。
-
如果你打电话给
sum(arr, 3),那么sum(arr, n - 1) + arr[n - 1]->sum(arr, 2) + arr[2]。所以前3个元素的总和可以计算为前2个元素的总和加上第三个元素的值。
标签: javascript web recursion