普通递归
var factorial =function(num){
if(num<=1){
return 1
}else{
return num*factorial(num-1)
}
}
console.log(factorial(6));//720
var copy=factorail;
factorail=null;
console.log(copy(6))//factorail is not defined
- 普通递归会造成 指向这个函数的只有copy,factorail被设置成了空。
改进递归
var factorial =function(num){
if(num<=1){
return 1
}else{
return num*arguments.callee(num-1)
}
}
console.log(factorial(6));
var copy=factorial;
factorial=null;
console.log(factorial);
console.log(copy(6));
- 这样函数就可以随便用了,试了下IE8也有用......,'use strict'模式下,报错。
终极递归(命名函数表达式)
var factorial =(function gg(num){
if(num<=1){
return 1
}else{
return num*gg(num-1)
}
}
)
console.log(factorial(6));
var copy=factorial;
factorial=null;
console.log(factorial);
console.log(copy(6));