javascript函数递归实现

在非严格模式下:

主要通过arguments.callee实现递归,它是一个指向正在执行的函数的指针。

function factorial(num){
    if(num <= 1){
        return 1;
    }else{
        return num * arguments.callee(num - 1);
    }
}

在严格模式下:

虽然访问arguments.callee这个属性会导致错误,但是可以使用函数表达式来达成相同的结果。

var factorial = function f(num){
    if(num <= 1){
        return 1;
    }else{
        return num * f(num-1);
    }
};

本篇博客参考自JavaScript高级程序设计,[p177-p178]