4 回答
TA貢獻1824條經驗 獲得超5個贊
我對數組進行切片,直到它變空,并用它的第一個元素增加總和值。由于您正在學習遞歸,我認為此解決方案將幫助您更好地理解遞歸。但是,考慮到良好的實踐和性能,您應該更喜歡reduce。
function sumOfInts(array, sum = 0) {
if (array.length === 0) return sum;
return sumOfInts(array.slice(1), sum + array[0]);
}
TA貢獻2012條經驗 獲得超12個贊
除非這是一個練習,否則您不需要遞歸。恕我直言Array#reduce更適合這項任務:
const sum = xs => xs.reduce((tot, x) => tot + x, 0);
sum([1,2,3,4]);
//=> 10
使用遞歸,您應該利用參數解構和默認值:
const sum = ([x = 0, ...xs]) => xs.length === 0 ? x : x + sum(xs);
sum([1,2,3,4]);
//=> 10
TA貢獻1820條經驗 獲得超10個贊
這是一個帶有經典函數式編程成分的版本:
const head = ([h]) => h;
const tail = ([, ...t]) => t;
const sumOfInts = (array) => array.length == 0 ? 0 : head(array) +
sumOfInts(tail(array))
sumOfInts([1,2,3,4])
// => 10
TA貢獻1866條經驗 獲得超5個贊
希望這可以幫助。
function sumOfInts(arr) {
if (arr.length > 0){
//Check if length is greater than 0 .
//If yes then get all the element but not the last
//And recursively pass the spliced array to the sumOfInts.
return sumOfInts(arr.splice(0,arr.length - 1)) + arr[0];
}
return 0;
}
let sum = sumOfInts([1,2,3,4,5]) ;
console.log(sum);
添加回答
舉報
