求教一个关于斐波那契数列的C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 05:21:21
void main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0)printf("\n");
f1=f1+f2;
f2=f1+f2;
}
}
中的f1=f1+f2和f2=f2+f1两语句到底是什么意思啊?有什么用啊?如果把第二句换成f2=f1+f2这样合法吗?谢谢,说得好的话我还加分。

一样的。合法。呵呵。
但是f1=f1+f2; 和f2=f1+f2;这两句不能对调。第一句改变了f1的值,第二句改变了f2的值,两个值一直这样递增上去。这题目很经典

合法啊
初始状态f1=f1+f2就相当于求出了费波纳锲数列的第三个元素的值(也就是第一个元素+第二个元素),f2=f1+f2相当于求出了第四个元素的值(第二个元素+第三个元素),这样以此类推,第五个元素第六个元素被依次求出

=应理解为赋值符号,而不是等于符号(逻辑等于符号是==)
f1=f1+f2 就是把f1+f2的值赋值给f1
f2=f2+f1 同理
f1+f2==f2+f1 所以f2=f2+f1和f2=f1+f2是一个意思

程序是:
1. 先将f1和f2初始化为1(即fibo数列中第一个和第二个数)
2. 然后进入循环,输出 1 1 之后
3. 判断i除以2的余数是不是等于0,是的话就换行,此步骤用来进行格式控制,即输出了4个数后换行(i每次增加后输出2个数)
4. 然后让f1=f1+f2, f2=f2+f1即让:
后来的f1=原来的f1+原来的f2(f1=1+1 =2)
后来的f2=原来的f2+后来的f1(f2=1+2 =3)
5. 然后进入下次循环,输出 2 3 后回到第3步继续做直到i<=20不满足为止