LeetCode LCR126[斐波那契数]

题目

链接

LeetCode LCR126[斐波那契数]

详情

实例

提示

题解

思路

首先想到用递归来求解,F(n) = F(n - 1) + F(n - 2)

但是吧,一看提示啊,0<= n <= 100,递归执行100次,那肯定是会超时的噻

所以单纯递归肯定是不可行的,此处我采用循环代替递归

当 n = 0 时,返回 0

当 n = 1 时,返回 1

当 n 大于 1 时,用循环代替递归来求解

循环体:F(n) = F(n - 1) + F(n - 2)

循环由 2 开始,由 n 结束

依次进入循环求得结果

并且求得的结果需要进行取模操作:F(n) = F(n) % 1000000007;

不然啊,如果不进行取模操作的话啊,就会越界啊,所以一定要记得取模

代码

class Solution {
public:
    int fib(int n) {
        
        if (0 == n)
            return 0;

        if (1 == n)
            return 1;
        
        long long fn_1 = 1, fn_2 = 0, iRet = 0;

        for (int i = 2; i  < n + 1; i++)
        {
            iRet = fn_1 + fn_2;
            iRet = iRet % 1000000007;
            fn_2 = fn_1;
            fn_1 = iRet;
        }

        return iRet;
    }
};

类似题目

LeetCode 1137[第N个泰波那契数] 题目

LeetCode 509[斐波那契数] 题目

类似题解

LeetCode 1137[第N个泰波那契数] 题解

LeetCode 509[斐波那契数] 题解

posted @ 2024-12-05 10:41  EricsT  阅读(10)  评论(0编辑  收藏  举报