对于递归和非递归分别实现求第n个斐波那契数的问题,我们可以通过一下代码来实现。
#include<stdio.h>
const int maxn=100000;
int calc(int n)
{
if(n==1||n==2) return 1;
else return calc(n-1)+calc(n-2);
}
int main()
{
int n,a=1,b,c=0;
scanf("%d",&n);
printf("递归--:%d\n",calc(n));
for(int i=1;i<=n;i++){
if(i<=2){
c=0;
}
else{
if(i>3) a=c;
c=b;
}
b=a+c;
}
printf("非递归--:%d",b);
return 0;
}