最近开始在freeCodeCamp上学习,对JavaScript的算法部分的题目进行记录,强化一下自己的知识点,也方便以后复习。
题目描述:
计算一个整数的阶乘 , 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积 。例如:5! = 1 * 2 * 3 * 4 * 5 = 120
刚开始想到的是用循环来实现,在实现之前需要对输入的数字做一下判断
function factorial (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;
};
该方法也可改为用while循环,后来想到用递归来实现这一方法,毕竟阶乘函数是递归函数的典型实例
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;
}