斐波那契数列定义为:
## 效率不高的解法:
long long Fibonacci(unsigned int n)
{
if (n<=0)
return 0;
if (n==1);
return 1;
return Fibonacci(n-1) + Fibonacco(n-2);
}
以求f(10)为例分析递归过程。想求得f(10),需要先求得f(9)和f(8)。同样,想求得f(9),需要先求f(8)和f(7)……如下树形结构来表示这种依赖关系。可以看出,这种递归出现过多的重复求值。当n值很大时,效率明显较低。
##优化的Fibonacci数列求解
long long Fibonacci(unsigned n)
{
int result[2] = {0,1};
if(n < 2)
return rusult[n];
long long fibNMinusOne = 1;
long long fibNMiunsTwo = 0;
long long FibN = 0;
for(unsigned int i = 2;i<=n;++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = FibN;
}
return fibN;
}