在这段代码中,我试图理解递归的概念,但是我完全错过了这一点:sum(arr, n) = sum(arr, n - 1) + arr[n - 1];
我有这段代码:
function sum(arr, n){ if(n <= 0){ return 0; } else { return sum(arr, n - 1) + arr[n - 1]; } } console.log(sum([5, 4, 7, 9, 2, 6], 5);
我试图理解表达式:sum(arr, n - 1) + arr[n - 1];
是这样的吗:在sum(arr, n - 1)
中,n是(index - 1)还是(n - 1)是要添加的数组项的长度。此外,在完成这个操作之后,第二个表达式arr[n - 1]怎么样。[n- 1]是一个数组元素吗,因为它在一个数组中,所以有"[]"。
如果有什么愚蠢或烦人的地方,请原谅,但是如果有人能帮忙指点我正确的方向,我将非常感激。
P粉4236943412023-09-08 09:29:40
你的函数 sum(arr,n)
可以描述为计算 arr[0]+...+arr[n-1]
。
这等同于 arr[0]+...+arr[n-2]+arr[n-1]
这等同于 sum(arr,n-1) + arr[n-1]
唯一不适用这个规则的情况是当 n<=0
时,此时和为0。