1、阶乘函数的公式
(1)n的阶乘用公式表示为:n!=1 * 2 * 3 * … * (n-1) * n,其中n≥1。
(2)当n=0时,n!=0!=1
2、js实现
function factorial(num) {
if(num <= 1){
return 1;
} else {
return num*arguments.callee(num -1);
}
}
const tureF = factorial;
console.log(tureF(5)); // 120
factorial = function (){
return 0
}
console.log(tureF(5)); // 120
console.log(factorial); //ƒ (){ return 0 }
方法二
function factorial(x){
if(x < 0){
throw new Error('不能小于0');
}
for(var y = 1; x > 1; x--) {
y*= x
};
return y;
}
console.log(1)
备注: 使用arguments.callee 而不使用 函数名factorial, 是减少与函数名的耦合
先来看看它长什么样:
补充: 表达式的执行顺序
例子:
for(表达式1;表达式2;表达式3){
表达式4;
}
执行顺序:
1)第一次循环,即初始化循环。
首先执行表达式1(一般为初始化语句),再执行表达式2(一般为条件判断语句),判断表达式1是否符合表达式2的条件,如果符合,则执行表达式4,否则,停止执行,最后执行表达式3.
2)换个姿势再来一次:
首先执行表达式2,判断表达式3是否符合表达式2的条件;如果符合,继续执行表达式4,否则停止执行,最后执行表达式3.如此往复,直到表达式3不再满足表达式2的条件。