三种实现阶乘的方法
方法1
function factorialize(num) {
// 如果num小于1,则终止
if (num<0) {
return -1;
} else if (num === 0 || num === 1) {
// num=0或num=1,返回1,这个是定理
return 1;
} else{
return num * factorialize(num-1);
}
}
factorialize(5);
第一个方法及其简单,else语句中是重复调用函数。但是这种方法好像有内存溢出的风险;
方法2:for循环
function factorialize(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;
}
方法3:while循环
function factorialize(num) {
var result = num;
if (num < 1) {
return -1;
} else if (num===0 || num===1) {
return 1;
} else {
while (num > 1) {
num--;
result *= num;
}
}
return result;
}