美文网首页
斐波那契数列,尾递归

斐波那契数列,尾递归

作者: monkeyfly36 | 来源:发表于2020-06-01 15:08 被阅读0次

    定义:

    实现:

    function fibonacci(n) {
        if (n==1 || n==2) return 1
        return fibonacci(n-2) + fibonacci(n-1)
    }
    

    缺点:在一个算法中,如果递归函数调用过多次数,那么就会导致堆栈溢出。

    解决方法:尾递归--不会发生栈溢出

    function fibonacci(n, a1 = 1, a2 = 1) {
        if (n==1 || n==2) return a2
        return fibonacci(n-1, a2, a1 + a2)
    }
    

    延伸1--循环(使用解构,给初始值,然后不断的累加)

    function fibonacci(n){
        if (n==1 || n==2) return 1
        var a1 = 1, a2 = 1
        for (let i = 2; i < n; i++){
            [a1, a2] = [a2, a1 + a2]
        }
        return a2
    }
    

    延伸2--generator

    相关文章

      网友评论

          本文标题:斐波那契数列,尾递归

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