一个c++的for循环

来源:百度知道 编辑:UC知道 时间:2024/06/11 21:46:49
网上看到一个fibonacci数列的c++代码 但他的for循环部分看不明白希望大家指点下!
unsigned long fibonacci (int n)
{
unsigned long f0,f1,result;
int i;
if (n<=2)
return 1;
for (f0=1,f1=1.i=3;i<=n;i++)
{
result=f0+f1;
f0=f1;
f1=result;
}
return result;
}
初始化我是明白 关键是i++好像没什么用啊!

那我可以理解成本程序中i只是起到计数器的作用而不是充当计算的变量吗?

其实就是第三个数等于前两个数相加
那么第三个数用result保存
也就是result=f0+f1;
这个时候下一个数的前两个数就变成了f1和result
这样仍用f0和f1代表前两个数就变成了
f0=f1;
f1=result;

所以此时f0和f1已经代表了计算后的f1和result了,这是下一次计算就又可以用result保存了。

for (f0=1,f1=1.i=3;i<=n;i++)
等价于
f0=1;
f1=1;//初始化
for (i=3;i<=n;i++)

n>2
f0 f1 result
| | |
f(1) f(2) f(3) f(5) f(6) ……

当n=4时,

f0 f1 result
| | |
f(1) f(2) f(3) f(5) f(6) ……

当n=5时,

f0 f1 result
| | |
f(1) f(2) f(3) f(5) f(6) ……

……