美文网首页
斐波那契数列

斐波那契数列

作者: 行走的蛋白质 | 来源:发表于2020-07-20 23:21 被阅读0次
    • n = n - 1 + n - 2

    翻书、走台阶问题

    • 共有 n 个台阶,每次只能上 1、2 个台阶,共有多少种方法爬完台阶
    • 共有 n 页书,每次只能翻 1、2 页,共有多少种方法翻完全书
    // 时间复杂度 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)
    

    相关文章

      网友评论

          本文标题:斐波那契数列

          本文链接:https://www.haomeiwen.com/subject/aptpkktx.html