我的代码有什么问题?

Project Euler #2 in c++ What is wrong with my code?

本文关键字:问题 什么 代码 我的      更新时间:2023-10-16

我试图通过做一些欧拉问题来获得c++的基础知识。我被问题2卡住了,为什么这段代码是错的?我知道这不是正确的做法(它太长了)。

问题是:

斐波那契数列中的每个新项都是通过将前两个项相加生成的。从1和2开始,前10项将是:

1、2、3、5、8、13、21、34、55、89、…

考虑Fibonacci数列中值不超过400万的项,找出偶数项的和。

#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。注意,这是我需要的两倍。

UPDATE:我更新了我的代码,但我仍然得到了我需要的答案的两倍。首先,我也为这个糟糕的问题感到抱歉。我也更新了

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