阶乘介绍:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且有0
的阶乘为1
。自然数n
的阶乘写作n!
至于0!=1,这里做个科学的解释,由2!=2*1!,可推出1!=1*0!,由于1!=1,可知0!=1。
阶乘实现(一种For循环,另一种递归)
1.For循环
function factorical(num){
if(num<0){
return -1;
}else if(num===0||num===1){
return 1;
}else{
for(let i=num;i>1;i--){
num*=i;
}
return num;
}
}
2.递归实现
a.
function factorical(num){
if(num<0){
return -1;
}else if(num===0||num===1){
return 1;
}else{
return num*(factorical(num-1));
}
}
弊端:函数的执行与函数名factorical紧密耦合在一起
b.
非严格模式(消除紧密耦合)
function factorical(num){
if(num<0){
return -1;
}else if(num===0||num===1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}
c.
严格模式,不能通过脚本访问 arguments.callee。使用函数命名表达式解决。
var factorical = (function factorical(num){
if(num<0){
return -1;
}else if(num===0||num===1){
return 1;
}else{
return num*(factorical(num-1));
}
});