簡體   English   中英

算法腳本:對所有奇數斐波那契數求和

[英]Algorithm Scripting: Sum All Odd Fibonacci Numbers

我正在嘗試解決這個問題。

" 給定一個正數 integer num,返回所有小於或等於 num 的奇數斐波那契數的總和。

斐波那契數列中的前兩個數是 1 和 1。數列中的每個附加數都是前兩個數的和。 斐波那契數列的前六個數字是 1、1、2、3、5 和 8。

例如,sumFibs(10) 應該返回 10,因為所有小於或等於 10 的奇數斐波那契數都是 1、1、3 和 5。”

這是我的解決方案,我只是不明白為什么它滿足除最后一個之外的所有陳述。 我找不到錯誤。 我將不勝感激任何幫助!

function sumFibs(num) {
  if(num === 1){
    return 1;
  }else if(num ===2){
    return 2;
  }

let arr=[1,1],
curr =1,
prev =1;

for(let i = 2; i<num;i++){
  let next = curr + prev;
  prev = curr;
  curr= next;
  
  if(curr<num && curr%2!==0){
      arr.push(curr);    
  }
}

   return arr.reduce((a,b)=>a+b);
}

console.log(sumFibs(75024));
console.log(sumFibs(75025));

即使它們應該不同,它也給了我相同的結果。

在此處輸入圖像描述

您應該添加“小於或等於 num”的數字。 您只對數字 < num 求和。

錯誤似乎是條件語句if(curr<num && curr%2!==0)不滿足上面的說明,說明如下:返回小於或等於的所有奇數斐波那契數的總和數

因此,當我們使用if(curr<num && curr%2!==0)作為條件語句時,我們不包括 75025,因為它不代表小於變量 num 的數字。

這就是我們發現錯誤的地方。 它應該包括不僅小於而且等於num的數字,在這種情況下num是 75025,由於不正確的條件語句,它沒有被包括在要總結的奇數斐波那契數組中。

您只考慮小於 num 的數字,但任務描述說小於或等於。 1 的基本情況也是錯誤的。 實際上,您一開始並不需要基本案例。 而不是 for 循環,您應該使用 while 循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM