计算一个整数的阶乘
如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积。
阶乘通常简写成 n!
例如: 5! = 1 * 2 * 3 * 4 * 5 = 120
刚拿到题目我想到了递归,先写了如下的代码:
function factorialize(num) {
// 请把你的代码写在这里
for(var i=num;i>1;i--){
return num*factorialize(num-1);
}
return num;
}
factorialize(5);
这么写对于传值5进去是没有问题的,但是要考虑到0的阶乘是1,所以应该写成:
function factorialize(num) {
// 请把你的代码写在这里
if(num===0){return 1;}
else if(num>0)
{
for(var i=num;i>2;i--){
return num*factorialize(num-1);
}
}
return num;
}
factorialize(5);
这样才算闯关成功。
后来在网上搜了一下别人的代码,摘了两段觉得比较好的,贴上来学习
function factorial(num) {
if(num <= 1) {
return 1;
} else {
return num * factorial(num - 1);
}
}
function factorialize(num) {
return num > 1 ? num * factorialize(num-1) : 1;
}