【问题标题】:Why do I get NaN when I call this factorial function?当我调用这个阶乘函数时,为什么会得到 NaN?
【发布时间】:2016-09-19 02:37:22
【问题描述】:

这是一个查找阶乘的函数。当我添加 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));

它适用于正态阶乘,但不适用于该方程。

【问题讨论】:

  • 我得到了正确答案。请在此处查看:jsfiddle.net/tc9cqeu4
  • 它也适用于等式。 jsfiddle.net/tc9cqeu4/2。您传递的 n 和 r 变量的值是多少?能否请您添加缺少的代码?
  • 如果传递负值,函数不返回数字。

标签: javascript nan


【解决方案1】:

您可能正在将一个字符串传递给您的阶乘函数。如果n 是通过用户输入设置的,就会发生这种情况。

factorial("9") / factorial("4") 返回NaN

要将字符串转换为数字,请使用+

var n = +myInput.value;
var r = +myOtherInput.value;
console.log( Math.floor(factorial(n) / factorial(n-r)) );

【讨论】:

  • 是的,n 是
猜你喜欢
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多