斐波那契数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

求斐波那契数可以用两种方式实现,分别是递归和循环。两种方式各有特点:递归实现节省空间但是相对循环实现耗时更多。

1.递归实现:

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

2.循环实现:

class Solution {
public:
    int fib(int N) {
        int arr[110];
        arr[0]=0,arr[1]=1;
        if(N==0)
            return 0;
        if(N==1)
            return 1;
        for(int i=2;i<N;i++)
            arr[i] = (arr[i-1] + arr[i-2])%(int)(1e9+7);

        return arr[N]%1000000007;
    }
};
posted @ 2020-08-23 15:29  从前有座山,山上  阅读(228)  评论(0编辑  收藏  举报