我不明白这个递归概念

时间:2020-03-08 06:32:19

标签: javascript

我是编程新手,但发现自己陷入了这一概念。我只是觉得很混乱。有人可以启发我理解这段代码的工作原理吗?

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
}

谢谢!抱歉,如果我这么问我,请不要打扰!

1 个答案:

答案 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