【LeetCode练习】剑指 Offer 10- I. 斐波那契数列(简单|JS|动态规划)

文章目录

  • 一、题目描述
  • 二、解题思路
  • 三、代码实现

一、题目描述

【LeetCode练习】剑指 Offer 10- I. 斐波那契数列(简单|JS|动态规划)_第1张图片

二、解题思路

方法1:递归不多说,但是会超时。

方法2:动态规划也很简单,要注意的是不能只对最终结果取模,要对每一个结果都取模才行(一开始没发现踩坑了)。

三、代码实现

方法1:

var fib = function (n) {
     if (n == 0) return 0
     if (n == 1) return 1
     return (fib(n-1) + fib(n-2)) % 1000000007
 };

方法2:

var fib = function(n) {
    const MOD = 1000000007;
    if (n < 2) {
        return n;
    }
    let p = 0, q = 0, r = 1;
    for (let i = 2; i <= n; ++i) {
        p = q; 
        q = r; 
        // 这里需要对每一次结果都求摸才行
        r = (p + q) % MOD;
    }
    return r;
};

你可能感兴趣的:(LeetCode,leetcode,动态规划,javascript)