題目描述
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];
}