题目描述
在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*),现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
思路1:迭代法
int Fibonacci(int n)
{
if(n==0) return 0;
if(n==1) return 1;
int a=0,b=1;
for(int i=1;i<n;i++)
{
b=a+b;
a=b-a;
}
return b;
}
思路2: 自顶向下动态规划,减少重复计算
int f[40];
int Fibonacci(int n)
{
if(n==0) return 0;
if(n==1) return 1;
if(f[n]!=0) return f[n];
int t=Fibonacci(n-1)+Fibonacci(n-2);
f[n]=t;
return t;
}
思路3:自底向上动态规划
int f[40];
int Fibonacci(int n)
{
f[0]=0;
f[1]=1;
if(n==0) return 0;
if(n==1) return 1;
for(int i=2;i<=n;i++)
{
f[i]=f[i-1]+f[i-2];
}
return f[n];
}