递归函数

//递归函数:可以理解为函数内部调用自身使用。
//调用方法有两种,第一种直接使用自身的函数名,第二种使用arguments.callee,arguments.callee是一个指向正在执行的函数的指针

function factorial(num) {
    //不推荐使用,factorial变了的时候,里面的也得变
    if (num <= 1) {
        return 1;
    } else {
        return num * factorial(num-1);
    }
}
//使用arguments.callee不会出现这种问题
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(4));//error 

function factorial2(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * arguments.callee(num-1);
    }
}
原文地址:https://www.cnblogs.com/qiangspecial/p/3181556.html