zoukankan      html  css  js  c++  java
  • 《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');
  • 相关阅读:
    Java日志框架
    分布式任务并发调度
    并发(三) CountDownLatch
    并发(二)CyclicBarrier
    并发(一) Semaphore
    MySql
    Hash
    由一个序列化框架的更换引发的问题
    navicat 12 激活
    Spring security
  • 原文地址:https://www.cnblogs.com/della/p/3296126.html
Copyright © 2011-2022 走看看