在這段代碼中,我試圖理解遞歸的概念,但是我完全錯過了這一點: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)是要添加的數(shù)組項的長度。此外,在完成這個操作之后,第二個表達式arr[n - 1]怎么樣。[n- 1]是一個數(shù)組元素嗎,因為它在一個數(shù)組中,所以有"[]"。
如果有什么愚蠢或煩人的地方,請原諒,但是如果有人能幫忙指點我正確的方向,我將非常感激。
你的函數(shù) sum(arr,n)
可以描述為計算 arr[0]+...+arr[n-1]
。
這等同于 arr[0]+...+arr[n-2]+arr[n-1]
這等同于 sum(arr,n-1) + arr[n-1]
唯一不適用這個規(guī)則的情況是當 n<=0
時,此時和為0。