Sum All Odd Fibonacci Numbers

題目要求

給一個正整數num,返回小於或等於num的斐波納契奇數之和。

斐波納契數列中的前幾個數字是 1、1、2、3、5 和 8,隨後的每一個數字都是前兩個數字之和。

例如,sumFibs(4)應該返回 5,因爲斐波納契數列中所有小於4的奇數是 1、1、3。

提示:此題不能用遞歸來實現斐波納契數列。因爲當num較大時,內存會溢出,推薦用數組來實現。


解析

數組溢出

題目不推薦用數組完成本題,也粗略測試了下,用數組緩存的話會發生一點小問題,在n爲75025和75024的兩種情況下,得到的結果是一樣的,但是應該是不一樣的。。可能是緩存會出現問題,之後在網上找到了這種循環存儲的方法比較實用


解題思路

第一步:建立fibo原始數組,用於存儲後期的數據

第二步:通過中間變量temp將fibo[0]和fibo[1]循環存入fibonacci數,並完成奇偶數判斷,存入nums中

第三步:將大象放進去

第四步:關上門

Javascript代碼

function sumFibs(num) {
  var fibo = [1, 1];
  var nums = 2;
  var temp = 0;
  while(true){
    temp = fibo[0] + fibo[1];
    if(temp > num){

      return nums;
    }
    if(temp % 2 !== 0){
      nums += temp;
    }
    fibo[0] = fibo[1];
    fibo[1] = temp;

  }

}

sumFibs(2);

結語

又是fibonacci數列,有點意思,這種循環存儲有規律數據的方法有學到了,賺到。


發佈了25 篇原創文章 · 獲贊 96 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章