为什么我在调用这个阶乘函数时会得到 NaN?
Why do I get NaN when I call this factorial function?
这是一个求阶乘的函数。当我添加 typeof 行时出现问题。这是代码:
function factorial(num) {
if ((typeof num) == "number") {
if (num < 0) {
error.innerHTML = "Choose a positive number or 0!";
}
else if (num == 1 || num == 0) {
return 1;
}
else {
return num * factorial(num - 1);
}
}
}
每当它被调用时,我都不会得到一个数字作为答案,而是得到 "NaN"。
我正在尝试使用以下代码计算排列:
Math.floor(factorial(n)/factorial(n-r));
它确实适用于正态阶乘,但不适用于该方程。
您可能正在将一个字符串传递给您的阶乘函数。如果通过用户输入设置 n
,就会发生这种情况。
factorial("9") / factorial("4")
returns NaN
.
要将字符串转换为数字,请使用 +
:
var n = +myInput.value;
var r = +myOtherInput.value;
console.log( Math.floor(factorial(n) / factorial(n-r)) );
这是一个求阶乘的函数。当我添加 typeof 行时出现问题。这是代码:
function factorial(num) {
if ((typeof num) == "number") {
if (num < 0) {
error.innerHTML = "Choose a positive number or 0!";
}
else if (num == 1 || num == 0) {
return 1;
}
else {
return num * factorial(num - 1);
}
}
}
每当它被调用时,我都不会得到一个数字作为答案,而是得到 "NaN"。
我正在尝试使用以下代码计算排列:
Math.floor(factorial(n)/factorial(n-r));
它确实适用于正态阶乘,但不适用于该方程。
您可能正在将一个字符串传递给您的阶乘函数。如果通过用户输入设置 n
,就会发生这种情况。
factorial("9") / factorial("4")
returns NaN
.
要将字符串转换为数字,请使用 +
:
var n = +myInput.value;
var r = +myOtherInput.value;
console.log( Math.floor(factorial(n) / factorial(n-r)) );