5-algorithm斐波那契数列

309 阅读1分钟
// const t = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...];
// 起点为1, 1
// 从第三项开始每一项为前面两项之和

// 经典问题:
// 如何返回斐波那契数列的第n个元素?
// 例如:fib(4)
// 结果 5
function fib(n) {
    const numbers = [1, 1]; // 1
    for (let i = 2; i < n + 1; i++) {
        // 1
        console.log('123'); // n - 1
        numbers.push(numbers[i - 2] + numbers[i - 1]); // n - 1
    }
    return numbers[n]; // 1
}

// T = 1 + 1 + 2*(n - 1) + 1 = 1 + 2n
// T = 2*n
// T = n => O(n) => 线性时间复杂度

console.log('fib(1)', fib(1));
console.log('fib(2)', fib(2));
console.log('fib(3)', fib(3));
console.log('fib(4)', fib(4));
console.log('fib(20)', fib(20));
// fib(1) 1
// fib(2) 2
// fib(3) 3
// fib(4) 5
// fib(20) 10946