首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

js递归解决方案

作者:  时间: 2011-06-06

递归函数是在一个函数通过调用自身的情况下去解决的:

方式如下:

function factorial(num){

    if(num<=1){

    return 1; 

   }else{

    return num*factorial(num-1);

   }

}

但是这在js里面可能会出现错误:

var anotherFactorial = factorial;

factorial=null;

alert(anoterFactorial(4));

因为在调用anoterFactorial时内部的factorial已经不存在了。

解决方法是通过arguments.callee来解决。

如下:

function factorial(num){

  if(num<=1){

   return 1;

  }else{

  return num*arguments.callee(num-1);  

}

var anotherFactorial = factorial;

factorial = null;

alert(anotherFactorial(4));

成功!!!!

}