JS学习笔记_嵌套函数_阶乘

今天在看JS从入门到精通一书第四章【递归函数】一节,有道题是计算10的阶乘,即10!。
书上给出的是
function f(num){if(num<=1){return 1;}else{return f(num)*(num-1);}}

这里用到了递归函数,return f(num-1)*num;
在网上搜了下其他JS中递归的实现,发现了个“arguments.callee”用法

现在已经不推荐使用arguments.callee();
原因:访问 arguments 是个很昂贵的操作,因为它是个很大的对象,每次递归调用时都需要重新创建。影响现代浏览器的性能,还会影响闭包。 一道面试题。接受参数n=5,不用for循环输出数组【1,2,3,4,5】 这用递归的思路,配合arguments.callee,代码如下

function show(n) {
    var arr = [];
    return (function () {
        arr.unshift(n);
        n--;
        if (n != 0) {
            arguments.callee();
        }
        return arr;
    })()
}
show(5)//[1,2,3,4,5]
 参考资料:http://www.cnblogs.com/lijinwen/p/5727550.html