• 《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');
  • 相关阅读:
    找到排序矩阵中从小到大第K个数字
    使用VSCODE开发UE4
    UE4添加模块
    游戏串流
    DIY Arduino 方向盘
    免费/开源软件推荐
    把引擎插件变成工程插件
    MergeActors技巧
    烘焙卡在99%
    UMG里没有"Prefab"怎么办?
  • 原文地址:https://www.cnblogs.com/della/p/3296126.html
Copyright © 2020-2023  润新知