509. 斐波那契数

Posted by CodingWithAlice on June 2, 2021

509. 斐波那契数

题:

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 01 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0F(1) = 1
F(n) = F(n - 1) + F(n - 2)其中 n > 1

给你 n ,请计算 F(n)

image-20210602083044472

解法1:

该解法为自己直接解

/**
 * @param {number} n
 * @return {number}
 */
var fib = function(n) {
    // n为0/1
    if (n === 0) {
        return 0;
    }
    if (n === 1) {
        return 1;
    }
    // n大于1
    return fib(n-1) + fib(n-2)
};

image-20210602083155227

解法2:

官方提供的动态规划思路

/**
 * @param {number} n
 * @return {number}
 */
var fib = function(n) {
    // n为0/1
    if (n < 2) {
        return n;
    }
    let temp1 = 0;
    let temp2 = 0;
    let res = 1;
    for (let i = 2; i <= n; i++) {
        temp1 = temp2;
        temp2 = res;
        res = temp1 + temp2;
    }
    return res
};

image-20210602133851923