我试图通过for循环解决Project Euler问题2。我是c编程的新手,我似乎无法使算法正确。 3524579
for循环假设查看32个斐波那契小于4000000.然后我定义了斐波那契函数,之后我想在第二个for循环中添加偶数斐波纳契数。
我得到3524579,任何人都可以帮我解决我做错的事吗?
/ *已编辑: 好的,我用你的提示重写了代码。我不明白为什么这不起作用。我试图在纸上写下每个步骤: 谓词被评估为b mod 2 == 0,因此发生以下情况:
sum = 2 + 0
a = b - > a == 2
b =总和 - > b == 2 这些步骤迭代到值4mill。有人能看到我看不到的东西:p?* /
新编辑的版本:我终于使用for循环了。只是想知道是否有一种更漂亮的方式来使用for循环。
#include <stdio.h>
int main() {
int a = 0;
int b = 1;
int result = 0;
int sum = 0;
for(;;){
if(!(b < 4000000)) break;
if(b % 2 == 0)
result = result + b;
sum = a + b;
a = b;
b = sum;
printf("%d\n", result);
}
}
答案 0 :(得分:3)
一些事情:
请注意,您的答案等于第31个原始数字+ 1。这意味着您将在每次迭代时用新值替换总数而不是保持总计。
考虑循环,直到当前的fib数为&gt; 4M而不是预先确定你需要查看32个fib数。