项目Euler#2 in c ++我的代码出了什么问题?

时间:2014-07-15 19:24:24

标签: c++

我试图通过做一些欧拉问题来获得c ++的基础知识。 我遇到问题2,为什么这个代码错了? 我知道这不是正确的做法(很长时间)。

问题是:

  

Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:

     

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

     

通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。

#include <iostream>

int main()
{
    int number1 = 0, number2 = 1, sum = 0;
    long int i;
    for (i = 0; i < 37; i++) {
        if (number1 < 4000000) {
            if (number1 % 2 == 0){
                sum = sum + number1;
            }
        }
        if (number2 < 4000000) {
            if (number2 % 2 == 0) {
                sum = sum + number2;
            }
        }

        if (i % 2) {
        number1 = number2 + number1;
        }
        else {
        number2 = number1 + number2;
        }
    }

    std::cout << sum << "\n";
    system("pause");
    return 0;
}

我知道正确的代码,但我仍然不明白我的错误。 我需要的输出是4613732,但我有9227464作为输出。请注意,这是我需要的两倍。

更新:我更新了我的代码,但我仍然得到了我需要的双倍答案。 我也很抱歉这个糟糕的问题。我也更新了它。

1 个答案:

答案 0 :(得分:1)

您正在对斐波那契数字进行双重求和,仔细查看if (i % 2)和相应的else