• 《javascript高级程序设计》第七章 递归recursion


    7.1 递归
    7.2 闭包
      7.2.1 闭包与变量
      7.2.2 关于this 对象
      7.2.3 内存泄漏
    7.3 模仿块级作用域
    7.4 私有变量
      7.4.1 静态私有变量
      7.4.2 模块模式
      7.4.3 增强的模块模式
     
    书上给的例子是:(还有一个用argument.callee的,但是在严格模式下 strict mode,无法访问这个属性)
     
    var factorial = (function f(num){
        if (num <= 1){
            return 1;
        } else {
            return num * f(num-1);
        }
    });

    网上还有一个相类似的:

    var factorial=function factorial(i,a){
        a=a||1;
        if(i<2){
            return a;
        }
        return factorial(i-1,a*i);
    };
     
    网上还有个比较经典的汉诺塔hanoi的:
     
    var hanoi=function(disc,src,aux,dst){
        if(disc>0){
        hanoi(disc-1,src,dst,aux);
        document.writeln('Move disc '+disc+' from '+src+' to '+dst);
    document.writeln('<br/>');
        hanoi(disc-1,aux,src,dst);
       }
    }
     
    根据书上里规范改写为:
     
    var hanoi = (function f(disc,src,aux,dst){
        if(disc>0){
                f(disc-1,src,dst,aux);
                document.writeln('Move disc '+disc+' from '+src+' to '+dst);
                document.writeln('<br/>');
                f(disc-1,aux,src,dst);
        }
    });

    (重点来了,按照书上的例子改写,这样更加有利于延展。。。哈哈哈)
    var s = hanoi;
    hanoi = null;
    s(3,'Src','Aux','Dst');
  • 相关阅读:
    Task 5.1 电梯调度程序需求调研报告
    Task 4 求数组的连续子数组的最大和(团队合作)
    class 3 求数组中的最大值(单元测试)
    《你的灯亮着吗》读书笔记3
    优惠购书
    校友聊NABCD
    环状二维数组(改进版)
    环状二维数组
    环状一维数组
    二维数组最大值
  • 原文地址:https://www.cnblogs.com/della/p/3296126.html
Copyright © 2020-2023  润新知