函数递归

来源:互联网 发布:淘宝卖家电话是多少 编辑:程序博客网 时间:2024/06/06 00:21
递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示的一个经典的阶乘函数
function factorial(num){     if (num < 1){         return 1;     }else{         return num * factorial(num - 1);     } }
当使用如下代码却可能导致它出错
  var anotherFactorial = factorial;    factorial = null;    alert(anotherFactorial(4));//出错

在非严格模式下,可用如下方法,实现
 function factorial(num){        if(num < 1){            return 1;        }else{            return num * arguments.callee(num -1);//arguments.callee是一个指向一个正在执行的函数的指针        }    }

严格模式下,不能通过脚本访问arguments.callee,可用下面的命名函数表达式来达成相同的结果
var factorial = (function f(num) {        if(num<1){            return 1;        }else{            return num * f(num -1 );        }    });





原创粉丝点击