问题:求斐波那契数
输入:N
输出:求第N项斐波那契数
思路:
递归/循环
代码:
递归代码
int fibo(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
return fibo(n-1)+fibo(n-2);
}
循环代码
class Solution {
public:
int Fibonacci(int n) {
int result[2]={0,1};
if(n<2)
return result[n];
int fibNMinusOne = 1;
int fibNMinusTwo = 0;
int fibN;
for(int i=2;i<=n;i++)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
};
复杂度分析:递归代码时间复杂度为O(2^N),空间复杂度为O(N)(至多占用N-1个栈空间);循环代码时间复杂度为O(N),空间复杂度为O(1)。