JavaScript 中使用遞迴求陣列和的修改版本


假設我們需要編寫一個遞迴函式,用於對數字陣列中的所有元素求和,但需要一個技巧,這個技巧是:我們編寫的遞迴函式不能初始化任何額外的變數(記憶體)。

例如,我們不能使用變數來儲存總和或記錄陣列索引,所有操作都必須使用我們已經擁有的內容。

以下是解決方案:

我們已經擁有一個數組,可以使用它的第一個元素(即索引為零的元素)來儲存遞迴的總和。

方法是,我們重複地從陣列中彈出元素,並將其新增到陣列的第一個元素,直到只剩下一個元素為止。

當只剩下一個元素時,它將是陣列的累積和,我們返回它。此方法的程式碼如下:

示例

const recursiveSum = arr => {
   if(arr.length > 1){
      arr[0] += arr.pop();
      return recursiveSum(arr);
   };
   return arr[0];
};
console.log(recursiveSum([1,2,3,4]));
console.log(recursiveSum([1,2,3,4,3,6,3,32,7,9,5]));
console.log(recursiveSum([]));

輸出

控制檯輸出將是:

10
75
undefined

更新於: 2020年8月28日

258 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.