zoukankan      html  css  js  c++  java
  • 递归

    递归求斐波那契数列:

        //1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
        function getFib(n){
            if(n==1 || n==2){
                return 1;
            }
            return getFib(n-1)+getFib(n-2);
        }
        console.log(getFib(1))  //1
        console.log(getFib(2))  //1
        console.log(getFib(3))  //2
        console.log(getFib(4))  //3
        console.log(getFib(9))  //34
        console.log(getFib(50)) //卡死

    原因是这样算比较浪费性能。

        let i=0; //计数
        function getFib(n){
            i++;
            if(n==1 || n==2){
                return 1;
            }
            return getFib(n-1)+getFib(n-2);
        }
        console.log(getFib(20))     //6765
        console.log(i)      //13529

    由此可见,求第20位的数字,浏览器计算了13529次。

    改进如下:

        let i=0,
            obj={};
        function getFib(n){
            i++;
            if(obj[n] != undefined){  // 如果obj里已经有这个数,那么直接返回这个数
                return obj[n];
            }else{  // 如果obj里没有这个数,则进行计算
                if(n==1 || n==2){
                    obj[n]=1;
                    return 1;
                }else{
                    obj[n]=getFib(n-1)+getFib(n-2);
                    return obj[n];
                }
            }
        }
        console.log(getFib(60)) // 1548008755920
        console.log(obj)
        console.log(i)  // 117

    递归求阶乘:

        function fn(n){
            if(n==1){
                return 1;
            }else{
                return fn(n-1)*n;
            }
        }
        console.log(fn(1))  //1
        console.log(fn(2))  //1*2
        console.log(fn(3))  //1*2*3
        console.log(fn(4))  //1*2*3*4
        console.log(fn(5))  //1*2*3*4*5
  • 相关阅读:
    SpringMVC 拦截器不拦截静态资源的三种处理方式
    Tomcat启动失败问题 (指定的主资源集 [D:javaapache-tomcat-9.0.35webappsAppManageSystem] 无效)
    oracle转postgresql FOR UPDATE WAIT 5 处理
    jq插件验证
    HTML5数据储存
    canvas 一些 用法大全
    HTML canvas 绘图
    CSS3
    HTML 核心内容
    HTML5 媒体
  • 原文地址:https://www.cnblogs.com/wuqilang/p/11900995.html
Copyright © 2011-2022 走看看