zoukankan      html  css  js  c++  java
  • 函数表达式--递归

    递归

    递归函数是在一个函数通过名字调用自身的情况下构成的

    
    function f(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * f(num - 1)
        }
    }
    f(3) // 6
    
    var anotherFactorial = f;
    f = null; //f指向一个空指针
    alert(anotherFactorial(4)); //出错!
    

    arguments.callee 是一个指向正在执行的函数的指针,因此可以用它来实现对函数的递归调用

    
    function f(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * arguments.callee(num-1)
        }
    }
    f(3) // 6
    
    var anotherFactorial = f;
    f = null; //f指向一个空指针
    alert(anotherFactorial(4)); //24
    

    但在严格模式下,不能通过脚本访问 arguments.callee ,访问这个属性会导致错误。不过,可以使用命名函数表达式来达成相同的结果

    
    var factorial = (function f (num) {
    if (num <= 1){
    return 1;
    } else {
    return num * f(num-1);
    }
    });
    factorial(4) //24
    

    这种方式在严格模式和非严格模式下都行得通

    来源:https://segmentfault.com/a/1190000016549753

  • 相关阅读:
    GDB 学习
    常用Linux命令(长期更新)
    动态规划专题总结
    awk 简易使用
    mysql相关
    curl 整理
    linux 拆分文件
    Python中的排序方法
    about python
    vim 常用命令
  • 原文地址:https://www.cnblogs.com/qixidi/p/10391025.html
Copyright © 2011-2022 走看看