题目:写一个函数,输入n,求斐波那契数列的第n项。
方法1:递归:
int fib2(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return fib2(n-1)+fib2(n-2);
}
缺点:如果n比较大,那么递归程度比较深
方法2:
int fib(int n)
{
int result[2] = {0,1};
if(n < 2)
return result[n];
int fibOne = 0;
int fibTwo = 1;
int fibN = 0;
int i = 0;
for(i = 2; i <= n; i++)
{
fibN = fibOne + fibTwo;
fibOne = fibTwo;
fibTwo = fibN;
}
return fibN;
}
避免了无穷的的递归问题,一个循环时间复杂度为O(n);