我使用递归和 while 循环编写了一个阶乘函数,但无论何时调用它,它的返回值都是 NaN。请问我想知道为什么?以及如何解决?
函数
function factorial(n) {
while(n > 0)
return factorial(n - 1) * n;
}
最佳答案
您缺少基本情况的 return
语句。当您返回没有值时,该函数返回 undefined
,当您将其相乘时,您将得到 NaN
。
此外,您没有循环,所以您应该使用 if
而不是 while
。
function factorial(n) {
if (n > 0) {
return factorial(n - 1) * n;
} else {
return 1;
}
}
console.log(factorial(10));
您也可以用循环而不是递归来编写它。
function factorial(n) {
result = 1;
for (var i = 1; i <= n; i++) {
result *= i;
}
return result;
}
console.log(factorial(10));
关于javascript - 为什么我的阶乘函数返回 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880445/