一、什么是递归函数
二、完美的递归方法
三、总结
一、什么是递归函数
递归函数是在一个函数内通过名字调用自身的情况。
二、完美的递归方法
写法一:
/*
*方法说明:递归阶乘函数
*/
function test(num){
if(num <=1){
//递归停止的条件,必须得需要
return 1;
}
else{
//调用递归
return num * test(num-1);
}
}
缺点:
如果把test方法保存到一个变量,再释放test方法,使指向原始函数的引用只剩下变量。会报错。
如下:
写法二:
/*
*方法说明:递归阶乘函数
*/
function test(num){
if(num <=1){
//递归停止的条件,必须得需要
return 1;
}
else{
//调用递归,使用arguments.callee的方法代替函数名
return num * arguments.callee(num-1);
}
}
优点:
arguments.callee指向一个正在执行的函数的指针。可以解决写法一中的缺点。
缺点:
严格模式下,不支持arguments.callee。
写法三
/*
*方法说明:递归阶乘函数
*/
var test = (function f(num){
if(num <=1){
//递归停止的条件,必须得需要
return 1;
}
else{
//调用递归
return num * f(num-1);
}
});
可以解决写法一、写法二中的问题