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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP