【剑指Offer-循环和递归】面试题10:斐波那契数列

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

思路1

使用递归。

class Solution {
public:
    int Fibonacci(int n) {
        if(n==0)
            return 0;
        if(n==1)
            return 1;
        return Fibonacci(n-1) + Fibonacci(n-2);
    }
};

但由于这个问题的递归的时间复杂度为指数(O(2^n)),牛客网上没有通过。

思路2

使用循环。
代码如下:

class Solution {
public:
    int Fibonacci(int n) {
        int a[] = {0, 1};
        int ans = 0;
        if(n<2)
            return a[n];
        for(int i=2; i<=n; i++){
            ans = a[0] + a[1];
            a[0] = a[1];
            a[1] = ans;
        }
        return ans;
    }
};
posted @ 2020-02-18 22:48  Flix  阅读(131)  评论(0编辑  收藏  举报