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

斐波那契数列,尾递归

作者: 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