亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用遞歸在Javascript中對整數數組求和

使用遞歸在Javascript中對整數數組求和

慕哥6287543 2022-10-21 17:37:10
我是遞歸新手,想對一個整數數組求和。sumOfInts([1,2,3,4]) //expected output: 10我的嘗試:function sumOfInts(array) {  let counter = 0;  let result = 0;  if (counter === array.length - 2) {    return result + array[array.length - 1]  } else {    result += array[counter];    counter++;  }}我嘗試了一些方法來讓函數在 else 語句中調用自身,但到目前為止都失敗了?,F在,該函數不返回任何內容。
查看完整描述

4 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

我對數組進行切片,直到它變空,并用它的第一個元素增加總和值。由于您正在學習遞歸,我認為此解決方案將幫助您更好地理解遞歸。但是,考慮到良好的實踐和性能,您應該更喜歡reduce。


function sumOfInts(array, sum = 0) {

    if (array.length === 0) return sum;

    return sumOfInts(array.slice(1), sum + array[0]);

}


查看完整回答
反對 回復 2022-10-21
?
繁花如伊

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


查看完整回答
反對 回復 2022-10-21
?
拉莫斯之舞

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


查看完整回答
反對 回復 2022-10-21
?
心有法竹

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);


查看完整回答
反對 回復 2022-10-21
  • 4 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號