zoukankan      html  css  js  c++  java
  • 递归 recursive

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

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

    上面的代码虽然经典,在全局函数变量作为其引用的情况下,很容易出错。

    var anotherFactorial = factorail;

    factorial = null;

    alert(anotherFactorail(4));

    上面问题可以通过 arguments.callee 来解决。

    因此最开始的递归函数可以改写成,

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

    其中,arguments.callee 是一个指向正在执行的函数的指针。

    然而在严格模式下,上述代码仍然会导致错误,此时的解决方案是,通过函数表达式来达到相同的结果。

     1 var factorial = (function f(num)
     2 {
     3         if(num <= 1)
     4         {
     5             return 1;
     6         } 
     7        else 
     8        {
     9           return num * f(num -1);
    10        }
    11 })

    上面创建的是一个名为f() 的命名函数表达式

  • 相关阅读:
    MyEclipse和Eclipse非常方便的快捷键
    java面试题及答案
    Java笔试题解答
    Spring自定义注解
    Spring MVC上传文件
    JS实现购物车特效
    MySQL软件基本管理
    初识数据库
    Python3-IO模型
    Python3-协程
  • 原文地址:https://www.cnblogs.com/yiliweichinasoft/p/3687580.html
Copyright © 2011-2022 走看看