javascript - 为什么我的阶乘函数返回 NaN?

标签 javascript recursion while-loop nan factorial

我使用递归和 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/

相关文章:

javascript - 如何循环 jquery 返回的 JSON 数据?

javascript - 使用 simple_form 和 cocoon 时无法让 select2 工作

javascript - 为 Mapbox 标记添加 ID

java - 为什么我的递归迷宫算法不回溯?

asynchronous - Nodejs Sequelize 递归异步/等待

使用 List<int[]>.add() 重复值的 Java 递归

C++ 函数在 while(GetMessage(...)){...} 中不起作用

javascript float 栏未关闭 - 如何修复此 javascript 代码?

java - while 循环之后的代码永远不会执行

python - 删除重复数据并将其余数据附加到 Pandas 中