写一个函数,输入n,求斐波那契数列(Fibonacci)的第n项,
如果采用下面自上而下写法,则效率是非常低的,因为会有很多重复的操作
long long Fabonacci(unsigned int n)
{
if(n<=0)return 0;
if(n==1)return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
一般采用下面的自下而上写法
long long Fibonacci(unsigned int n)
{
int result[1]={0,1};
if(n<2)return result[n];
long long fibNMinusOne=1;
long long fibNMinusTwo=0;
long long fibN=0;
for(unsigned int i=2;i<=n:++i)
{
fibN=fibNMinusOne+fibNMinusTwo;
fibNMinusTwo=fibNMinusOne;
fibNMinusOne=fibN;
}
return fibN;
}