这是找到阶乘的函数。当我添加类型行时出现问题。这是代码:
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);
}
}
}
无论什么时候打电话,我都不会得到一个数字作为答案而是得到&#34; NaN&#34;。
我正在尝试使用此代码计算排列:
Math.floor(factorial(n)/factorial(n-r));
它适用于正常因子,但不适用于该等式。
答案 0 :(得分:1)
您可能正在将一个字符串传递给您的阶乘函数。如果通过用户输入设置n
,则会发生这种情况。
factorial("9") / factorial("4")
返回NaN
。
要将字符串转换为数字,请使用+
:
var n = +myInput.value;
var r = +myOtherInput.value;
console.log( Math.floor(factorial(n) / factorial(n-r)) );