斐波那契数列

2020-07-20  本文已影响0人  行走的蛋白质

翻书、走台阶问题

// 时间复杂度 O(n²)
function fibonacci(n) {
    if(n === 1) return 1
    if(n === 2) return 2
    if(n > 2) {
        return fibonacci(n - 1) + fibonacci(n - 2)
    }
}
fibonacci(10)

// 时间复杂度 O(n)
function fibonacci2(n) {
    let arr = new Array(n + 1).fill(0)
    arr[1] = 1
    arr[2] = 2
    for(let i = 3; i < n + 1; i++) {
        arr[i] = arr[i - 1] + arr[i - 2] 
    }
    return arr[n]
}
fibonacci2(100)

let cache = {}
function fib(n) {
    if(!(n in cache)) {
        cache[n] = fib_(n)
    }
    return cache[n]
}
function fib_(n) {
    if(n === 1 || n === 2) return n
    return fib(n - 1) + fib(n - 2)
}
fib(100)
上一篇下一篇

猜你喜欢

热点阅读