整理的阶乘的几种方法
方法1.1:调用外层函数方法
function fac(num){
if(num < 0) return -1;
else if(num===0 || num ===1) return 1;
else{
return num * fac(num-1);
}
}
fac(5);
调用正在执行的fac函数
方法1.2:使用arguments.callee调用
function fac(num){
if(num < 0) return -1;
else if(num===0 || num ===1) return 1;
else{
return num * argument.callee(num-1);
}
}
fac(5);
argument.callee是一个指向正在执行的函数的指针
方法2.1:使用while循环
function fac(num){
var re = num;
if(num < 0) return -1;
else if(num===0 || num ===1) return 1;
else{
while(num>1){
num--;
re *= num;
}
}
return re;
}
方法2.2:使用for循环
function fac(num){
if(num < 0) return -1;
else if(num===0 || num ===1) return 1;
else{
for(var i = num-1;i >= 1;i--){
num *= i;
}
}
return num;
}
fac(5);