在這段程式碼中,我試著去理解遞歸的概念,但我完全錯過了這一點: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]是數組元素嗎,因為它在一個數組中,所以有"[]"。
如果有什麼愚蠢或煩人的地方,請原諒,但是如果有人能幫忙指點我正確的方向,我將非常感激。
你的函數
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。