复杂度:2^n
int f(int n)
{
if(n==1) return 1;
else if(n==2) return 1;
else
return f(n-1)+f(n-2);
}
优化:
思路一:memoiazation 记忆
将已经计算过的实例制表查备;
int Fibonacci(int n)
{
if(n<=0)
return 0;
else if(n==1)
return 1;
else
{
//动态创建一个长度为(n+1)的数组
int *arr=new int[n+1];
arr[0]=0;
arr[1]=1;
for(int i=2;i<=n;i++)
{
arr[i]=arr[i-1]+arr[i-2];
}
int result=arr[n];
delete [] arr;
return result;
}
}