C中的偶数斐波那契数,难题

C中的偶数斐波那契数,难题,c,C,问题: 斐波那契序列中的每个新项都是通过将前两项相加生成的。从1和2开始,前10个术语将是: 1、2、3、5、8、13、21、34、55、89 通过考虑Fibonacci序列中值不超过400万的项,求偶数值项之和 我已经找到了另一种方法来实现这一点,但我不明白为什么我的方法不起作用。我在下面包括了代码和我编写的算法过程。无论我选择k值的迭代跨度是多少(4000000还是10),我总是得到相同的答案:4200784。谢谢你的帮助 #include <stdio.h> int main

问题:

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

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

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

我已经找到了另一种方法来实现这一点,但我不明白为什么我的方法不起作用。我在下面包括了代码和我编写的算法过程。无论我选择k值的迭代跨度是多少(4000000还是10),我总是得到相同的答案:4200784。谢谢你的帮助

#include <stdio.h>

int main()
{
long int sum;
sum = 0;
long int i;
i = 1;
long int j;
j = 2;
long int k;

while(k<4000000)
{   
    k = i + j;
    if(k%2==0)
        sum +=k;
    i = j;
    j = k;
    
}
printf("%d",sum);
return 0;
}

//Step 0//For the initial conditions [i][j]=[1][2]
//Step 1//Find the value of i + j.
//Step 2//Find out if the solution is even by dividing by modulus 2.
//Step 3//If even, add the solution to the sum.
//Step 4//Replace the value of i with j, and replace the value of j with the new sum.
//Repeat Steps 1-4 while i + j < 4,000,000
//1, 2, 3, 5, 8, 13, 21, 34
#包括
int main()
{
长整数和;
总和=0;
long int i;
i=1;
long-int-j;
j=2;
长整型k;

而(k我相信你在寻找

sum += k;
不是

您还应该修复此问题,并将其放置在while循环中

k = i + j;

注意:您还应该将sum初始化为0

您从未初始化过“k”变量。在第一个“while”测试中,您对“k”有一个未定义的值,因此所有赌注都是无效的。

您真的是指
i+j==k;
吗?嗯,
sum
未初始化,您从未分配给it@teppic我很困惑。这不是我所拥有的吗?@Fredrik I再次尝试,我将sum设置为0。这是否初始化了变量并分配给它?谢谢伙计们。@user2168665是的,将其初始化为0。别忘了,
sum
从未初始化为零哇,谢谢@Corvin我现在得到了一个答案。这还不是正确的答案,但我会继续使用它。我很高兴我在我的方法中并不是完全疯狂。@user2168665 np,发现你的不疯狂总是很好:)嗯,我一直在努力解决这个问题。它没有给我正确的值。我想我应该把(k=I+j);放在while循环的顶部。但是,只有当我把它放在(I=j;)之后时,我才会得到结果.但是…但是…但是…但是…我…既没有…被投票…也没有…被标记为…正确的…答案??)
k = i + j;