一、题目描述
二、解题思路
方法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;
};