zoukankan      html  css  js  c++  java
  • 递归与尾递归

    function fibonacci2(n, result, preValue) {
                if (n == 0) {
                    return result;
                }
                return fibonacci2(n - 1, preValue, result + preValue);
            }
            console.log("使用了尾递归,不会栈溢出", fibonacci2(2, 0, 1));
     
    function fibonacci2(n, result, preValue) {
                if(n === 0){
                    return result
                }
                return fibonacci2(n-1,preValue,result+preValue)
            }
            console.log(fibonacci2(100,0,1))
            fibonacci2(99,1,1)
            
            fibonacci2(98,1,2)
            fibonacci2(98,2,3)
     
     
     
    function fac(n){
                if(n === 1){
                    return 1
                }
                return fac(n-1)*n
            }
            console.log(fac(10))
            function fac(n,sum){
                if(n === 1){
                    return sum
                }
                return fac(n-1,n*sum)
            }
            console.log(fac(10,1))
            fac(9,10)
            fac(8,10*9)
    总结:尾递归,可想而知是逆递归,正常我们10个循环 是从1到10,而尾递归 是从10到1循环,但是循环的规律不变,这样也可以实现,而且还能避免栈溢出
  • 相关阅读:
    Linux route
    python 实现自定义切片类
    python 自省机制
    python 实例方法、静态方法、类方法
    python 动态语言和协议编程
    python 鸭子类型
    信息论
    CRF keras代码实现
    CRF 详细推导、验证实例
    attention 汇总(持续)
  • 原文地址:https://www.cnblogs.com/MDGE/p/14614620.html
Copyright © 2011-2022 走看看