我试图通过做一些欧拉问题来获得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作为输出。请注意,这是我需要的两倍。
更新:我更新了我的代码,但我仍然得到了我需要的双倍答案。 我也很抱歉这个糟糕的问题。我也更新了它。
答案 0 :(得分:1)
您正在对斐波那契数字进行双重求和,仔细查看if (i % 2)
和相应的else
。