本题采用动态规划高效解答
斐波那契数的边界条件是 F(0)=0F(0)=0 和 F(1)=1F(1)=1。当 n>1n>1 时,每一项的和都等于前两项的和,因此有如下递推关系:
F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
我们设置一个动态规划的计算,减少空间复杂度。把空间只设置为3个值,即前两项与前两项的和,每增进一项就减少一项。
/**
* @param {number} n
* @return {number}
*/
var fib = function(n) {
const mo = 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)%1000000007
}
return r
};
计算过程中,答案需要取模