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的算法复杂度更简单。
网友评论