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循环,但是循环的规律不变,这样也可以实现,而且还能避免栈溢出
  • 相关阅读:
    OTG线与普通USB线的区别
    打开CMDLINE中的 ” earlyprink “ 参数
    深化管理、提升IT的数据平台建设方案
    ROS(indigo)ROSPlan框架
    ROS(indigo)RRT路径规划
    Unity UGUI图文混排(六) -- 超链接
    ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料
    Ubuntu和ROS一起愉快玩耍
    IO流—字符流
    IO流——字节流
  • 原文地址:https://www.cnblogs.com/MDGE/p/14614620.html
Copyright © 2011-2022 走看看