斐波那契数列
1.递归
#include<stdio.h>
#include<string.h>
int arr[100];
int Fibon1(int n)
{
if(arr[n]!=-1)
return arr[n];
arr[n]=Fibon1(n-1)+Fibon1(n-2);
return arr[n];
}
int main(void)
{
memset(arr,-1,sizeof(arr));
arr[0]=1;
arr[1]=1;
int a;
scanf("%d",&a);
Fibon1(a);
for(int i=0;i<=a;i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
2.非递归
#include<stdio.h>
int m=1,n=1,tmp=0;
int Fibon2(int t)
{
if(t<3)
{
return 1;
}else
{
for(int i=0;i<t-2;i++)
{
tmp=m+n;
m=n;
n=tmp;
}
return tmp;
}
}
int main(void)
{
int a;
scanf("%d",&a);
Fibon2(a);
printf("%d\n",tmp);
return 0;
}