2017-03-26 40 views
1

我想從Project Euler#2編寫練習的算法。這裏是鍛鍊:我的算法中出現了錯誤

「在Fibonacci序列中的每個新項是通過添加 前兩項生成通過與圖1和2開始,第一10個術語將 是:

1, 2,3,5,8,13,21,34,55,89,...

通過考慮斐波納契數列中不是 超過400萬的項,求出偶數值術語「。

這裏是我的算法:

public class FibonacciSum { 
    public static void main(String[] args) { 
     int a = 0; 
     int b = 2; 
     int sum = a + b; 
     while (a < 4000000 && b < 4000000){ 
      a += b; 
      if (a < 4000000){ 
       sum = a + sum; 
       b += a; 
       if (b < 4000000){ 
        sum = b + sum; 
       } 
      } 
     } 
     System.out.println(sum); 
    } 
} 

程序計算答案:7049154 但尤拉說,這是錯誤的答案。我嘗試了幾種方法,但沒有成功。 請告訴我,我在哪裏做錯了?

+0

它看起來很像你從0和2開始,而不是1和2。 – doelleri

回答

-3

在這裏你去;)

#include <stdio.h> 
int main(void) { 
    int g=0,h=0,v=1,i=1; 
    while (i<4000000) { 
     if ((~i & 1)) h+=i; 
     g = v; 
     v = i; 
     i = g + v; 
    } 
    printf("> %d \n",h); 
    return 0; 
}; 
0

你的代碼中有幾個問題:

1)首先,你選擇了不正確的啓動值。你最終的結果如下:0,2,4,6,10 ... 2)你只需要總結偶數。 3)你的代碼過於複雜。試着找到一個不到400萬的斐波納契數字。然後只需加上總和

相關問題