写一个函数,输入n,求斐波那契数列的第n项。
递归解法(效率很低):
int Fibonacci(int n)
{
if ( 0 == n )
return 0;
else if ( 1 == n )
return 1;
else
return Fibonacci(n-1) + Fibonacci(n-2);
}
循环解法(O(n)):
long long Fibonacci( unsigned n )
{
int result[2] = { 0, 1 };
if ( n < 2 )
return result[n];
long long fibNMinusOne = 0;
long long fibNMinusTwo = 1;
long long fibN = 0;
for ( unsigned i = 2; i <= n; ++i ){
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusOne = fibNMinusTwo;
fibNMinusTwo = fibN;
}
return fibN;
}