c+中的项目Euler#2+;我的代码有什么问题? 我试图通过做一些欧拉问题来获得C++的基础知识。 我被问题2卡住了,为什么这个代码错了? 我知道这不是正确的方法(太长了)

c+中的项目Euler#2+;我的代码有什么问题? 我试图通过做一些欧拉问题来获得C++的基础知识。 我被问题2卡住了,为什么这个代码错了? 我知道这不是正确的方法(太长了),c++,C++,问题是: 斐波那契序列中的每个新项都是通过将前两项相加生成的。从1和2开始,前10个术语将是: 1、2、3、5、8、13、21、34、55、89 通过考虑Fibonacci序列中值不超过400万的项,求偶数值项之和 #包括 int main() { int number1=0,number2=1,sum=0; long int i; 对于(i=0;i

问题是:

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

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

通过考虑Fibonacci序列中值不超过400万的项,求偶数值项之和

#包括
int main()
{
int number1=0,number2=1,sum=0;
long int i;
对于(i=0;i<37;i++){
如果(1号<4000000){
如果(数字1%2==0){
总和=总和+数字1;
}
}
如果(数字2<4000000){
如果(数字2%2==0){
总和=总和+数字2;
}
}
如果(i%2){
number1=number2+number1;
}
否则{
number2=number1+number2;
}
}

std::cout您是斐波那契数的二次求和,请仔细查看
if(i%2)
和相应的
else

number1%2
返回一个
int
。你为什么要与
false
进行比较?你的输出是什么,应该是什么?如果int=0,那么它是false,我就知道number1是偶数。当然
false
作为
int
是0,但是这样做没有意义我的输出是5702886,输出应该是4613732。我使用if(i%2)因为第一次需要更改number1,第二次需要更改number2。为什么它的和是双倍的?它会执行两个中的一个,还是不执行?双倍和不在斐波那契项的计算中,而是在总和中。调试,将在循环的不到10次迭代中可见
#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;
}