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

    递归

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

    1     function factorial(num){
    2         if (num <=1){
    3             return 1;
    4         } else {
    5             return num * factorial(num-1);
    6         }
    7     }

    这是一个经典的递归阶乘函数,但是下面的代码会让它出错

    1     var anotherFactorial = factorial;
    2     factorial = null;
    3     console.log(anotherFactorial(4));//factorial is not a function

    在执行anotherFactorial()函数时,factorial已经不是函数了

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

    1     function factorial(num){
    2         if (num <=1){
    3             return 1;
    4         } else {
    5             return num * arguments.callee(num-1);
    6         }
    7     }

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

     1     var factorial = (function f(num){
     2         if (num <= 1){
     3             return 1;
     4         } else {
     5             return num * f(num -1);
     6         }
     7     });
     8 
     9     var anotherFactorial = factorial;
    10     factorial = null;
    11     console.log(anotherFactorial(4)); //24
    不要在该奋斗的年纪而选择了安逸
  • 相关阅读:
    ajax简单案例
    jquery中的数据传输
    java-Reflect
    Factory Method 和AbstractFactory
    Singleton
    英语六级口语备考指南
    ACM信息汇总
    jquery练习
    char可不可以存汉字
    信息安全
  • 原文地址:https://www.cnblogs.com/qqandfqr/p/5720345.html
Copyright © 2011-2022 走看看