第一个不起作用,它只是试图找到一个阶乘,它返回NaN,那么为什么如果你使用了其它无效呢?
function FirstFactorial(num) {
if (num == 0) {
return 1;
}
else if (num > 1) {
return num * FirstFactorial(num - 1);
}
}
console.log(FirstFactorial(3)) === NaN
function factorial(n) {
if(n == 0) {
return 1
}
else {
return n * factorial(n - 1);
}
}
console.log(factorial(3)) == 6
答案 0 :(得分:1)
你错过了num === 1
的案例,所以当你做
function FirstFactorial(num) {
if (num == 0) {
return 1;
}
else if (num > 1) {
return num * FirstFactorial(num - 1);
}
}
FirstFactorial(3);
你正在做
3 * FirstFactorial(2);
3 * 2 * FirstFactorial(1);
3 * 2 * undefined; // NaN
重新安排功能逻辑
function FirstFactorial(num) {
if (num > 1) {
return num * FirstFactorial(num - 1);
}
return 1;
}