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循环,但是循环的规律不变,这样也可以实现,而且还能避免栈溢出
  • 相关阅读:
    浅谈JS的数组遍历方法
    浅谈JavaScript函数重载
    随机数的组合问题(JavaScript描述)
    如何使用百度bae部署web项目
    阿里前端笔试总结
    有趣的JavaScript隐式类型转换
    CSS如何实现”右部宽度固定,左部自适应“的布局
    Nor Flash的理论性能
    python argparse:命令行参数解析详解
    rwcheck:为嵌入式设备设计的读写压测工具
  • 原文地址:https://www.cnblogs.com/MDGE/p/14614620.html
Copyright © 2011-2022 走看看