给出如下递推式:
以上就是经典的Fibonacci数列,下面给出递推的解法:
int Fibonacci(int n) { if(n<=0) return 0; else if(n==1) return 1; else return Fibonacci(n-1)+Fibonacci(n-2); }
我们知道 ,以上的解法每个F(n)计算了2次,我们能不能只计算一次,做一个缓存,当然是可以的。如下:
int tmp1=1;//临时变量,保存中间结果 int tmp2=0; int tmp; int Fibonacci(int n) { int F; for(int i=2;i<=n;++i) { tmp=tmp1+tmp2; tmp2=tmp1; tmp1=tmp; } return tmp; }
以上采用了循环的方法,时间复杂度加快了。