2017-03-26 41 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万的斐波纳契数字。然后只需加上总和

相关问题