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循环,但是循环的规律不变,这样也可以实现,而且还能避免栈溢出
  • 相关阅读:
    struts2 s:if 的字符串比较问题
    struts2 标签
    servlet filter
    div滚动与控制
    页面定位
    linux下编译利用CMakeLists.txt 编译C++写的opencv程序
    yolo image.c
    强制杀进程
    PDB GDB 调试代码
    YOLOv3的Darknet在OpenCV3.4.1(bug)下编译出错填坑
  • 原文地址:https://www.cnblogs.com/MDGE/p/14614620.html
Copyright © 2011-2022 走看看