当我调用这个阶乘函数时,为什么我会得到NaN?

时间:2016-05-22 03:29:42

标签: javascript nan

这是找到阶乘的函数。当我添加类型行时出现问题。这是代码:

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));

它适用于正常因子,但不适用于该等式。

1 个答案:

答案 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)) );