#include<stdio.h>
#include<time.h>
//斐波那契非递归
int Fib2(int n)
{
if(n==1||n==2) return 1;
int f1,f2,f3;
f1=1;f2=1;
for(int i=3;i<=n;i++){
f3=f1+f2;
f1=f2;
f2=f3;
}
return f3;
}
int main(){
int n;
int start,end;
printf("请输入一个数:");
scanf("%d",&n);
start = clock();
int a;
a=Fib2(n);
printf("%d\n",a);
end = clock();
printf("运行时间为:%dms",end-start);
return 0;
}
对于一组斐波那契非递归数列:1 1 2 3 5 8 13 21.....
不难看出,除了第一个和第二个数是1外,从第三个开始f(n)=f(n-1)+f(n-2);