Fibonacci数
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
-
无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为
F[n]=0;(n=0);
F(n)=F(n-1)+F(n-2).....(n>2)
现要你来求第n个斐波那契数。(第1个、第二个都为1) -
F(n)=1 ...........(n=1或n=2)
-
-
递归法://效率低
-
#include<stdio.h>
int fib(int n)
{
if(n==0||n==1) return n;
return fib(n-1)+fib(n-2);
}
int main()
{
int m;
scanf("%d",&m);
while(m--)
{
int n;
scanf("%d",&n);
printf("%d\n",fib(n));
}
}
-
-
递推法:
-
#include<stdio.h>
int main()
{
int n,i,f[1000];
scanf("%d",&n);
f[0]=0;
f[1]=1;
for(i=2; i<=n; i++)
{
f[i]=f[i-1]+f[i-2];
}
printf("%d\n",f[n]);
return 0;
}