js的阶乘

1,写一个返回阶乘的函数
factorial(5) = 5*4*3*2*1
factorial(10) = 10*9*8*7*6*5*4*3*2*1
function factorial(n){
    if(n <= 1) return 1;
    return n*arguments.callee(n-1)
}

在不用试arguments.callee情况下,可以使用递归:

function factorial(n){
    if(n <= 1) return 1;
    return n*factorial(n-1)
}
2,编写一个函数1!+2!+3!...+n!
function jiecheng01(n){
    var sum = 0;
    for(;n>0;n--){
        let temp = (function(i){
            if(i<=1) return 1;
            return i*arguments.callee(i-1);
        })(n)
        sum+=temp;
    }
    return sum;
}
function jiecheng02(n){
    var i,temp = 1,sum=0;
    for(var i = 1;i<=n;i++){
         temp = i*temp;
         sum += temp;
    }
    return sum;
}

针对该问题,jiecheng02的算法复杂度更简单。

你可能感兴趣的:(js的阶乘)