递归函数

递归函数定义:** 函数体内调用自身的函数 **。
递归函数只有在特定的情况下使用 ,比如阶乘问题:

1
2
3
4
5
function factorial(num) {
if (num <= 1) return 1;
else return num * arguments.callee(num - 1);
}
factorial(4); // 24

代码中的arguments.callee可以替换为factorial,但是如下情况会导致错误:

1
2
3
var anotherFactorial = factorial; 
factorial = null;
anotherFactorial(4); // Uncaught TypeError: factorial is not a function