剑指offer 编程题10 斐波那契数

问题:求斐波那契数

输入: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)。 

发布了56 篇原创文章 · 获赞 10 · 访问量 6799

猜你喜欢

转载自blog.csdn.net/qq_22148493/article/details/104383695