我是编程新手,但发现自己陷入了这一概念。我只是觉得很混乱。有人可以启发我理解这段代码的工作原理吗?
function sum(arr, n) {
// Only change code below this line
if (n <= 0) {
return arr[0];
} else {
return sum(arr, n - 1) + arr[n];
// Only change code above this line
}
谢谢!抱歉,如果我这么问我,请不要打扰!
答案 0 :(得分:0)
在递归中,您可以在函数中调用函数,直到满足给定要求为止。
在这种情况下,您的函数需要一个数组作为输入以及给定的索引从何处开始(通常应该是该数组的 length-1 )。
F.e。调用函数sum([1,2,3,4], 3)
。
它检查您的索引是否在位置0,不是这种情况。
然后,它将给定索引arr[3] = 4
处的项目添加到同一函数,但索引低1:sum([1,2,3,4], 3) = sum([1,2,3,4], 2) + 4
下一个函数将其索引arr[2] = 3
加到与索引1:sum([1,2,3,4], 2) = sum([1,2,3,4], 1) + 3
相同的函数中。如果您在第一个函数调用中填写此内容,它将变为:sum([1,2,3,4], 3) = sum([1,2,3,4], 1) + 3 + 4
下一个函数将其索引arr[1] = 2
加到与索引0相同的函数sum([1,2,3,4], 1) = sum([1,2,3,4], 0) + 2
上。如果您在第一个函数调用中填写此内容,它将变成:sum([1,2,3,4], 3) = sum([1,2,3,4], 0) + 2 + 3 + 4
在n = 0
的情况下,它仅返回索引0处的数组的值。该索引中的数组的值:sum([1,2,3,4], 0) = arr[0] = 1
因此,总功能总计为sum([1,2,3,4], 3) = arr[0] + arr[1] + arr[2] + arr[3] = 1 + 2 + 3 + 4 = 10