分析:
可以采用递推方式递推出Fibonacci数列的每一项。如下图所示,用f1,f2,f3表示连续的3项,每一轮递推f3= f1+f2,就递推出新的一项,然后更新f1和f2的值,f1更新为f2,f2更新为f3;下一轮循环,因为f1和f2的值已经更新了,所以再递推出f3,又是新的一项
在上图中,f1,f2,f3就像一只蠕虫的三节一样,蠕虫每一轮向前爬一格。爬一格后f1就对应到之前f2的位置,f2就对应到之前f3的位置
代码如下:
#include <iostream>
using namespace std;
int main()
{
int n; cin >> n; //求Fibonacci数列的第n项
int f1 = 1, f2 = 1, f3; //表示连续的3项
if(n==1 or n==2){
cout << 1 << endl;
return 0;
}
for(int i=3;i<=n;i++){ //依次递推第3~n项
f3 = f1 + f2;
f1 = f2; //从左到右读:更新
f2 = f3;
}
cout << f3 << endl;
return 0;
}