Dans ce code, j'essaie de comprendre le concept de récursivité, mais je passe complètement à côté de l'essentiel : sum(arr, n) = sum(arr, n - 1) + arr[n - 1];
J'ai ce code :
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);
J'essaie de comprendre l'expression : sum(arr, n - 1) + arr[n - 1];
Est-ce comme ça : Dans sum(arr, n - 1)
, n est (index - 1) ou (n - 1) est la longueur de l'élément du tableau à ajouter. De plus, après cela, qu'en est-il de la deuxième expression arr[n - 1]. Est-ce que [n- 1] est un élément de tableau ? Parce qu'il est dans un tableau, il y a "[]".
Désolé si quelque chose est stupide ou ennuyeux, mais si quelqu'un peut m'aider à m'orienter dans la bonne direction, je l'apprécierais vraiment.
Votre fonction
sum(arr,n)
可以描述为计算arr[0]+...+arr[n-1]
.C'est équivalent à
arr[0]+...+arr[n-2]+arr[n-1]
C'est équivalent à
sum(arr,n-1) + arr[n-1]
Le seul cas où cette règle ne s'applique pas est lorsque
n<=0
, où la somme est 0.