【问题标题】:Why the function returnes NaN if the arguments are numbers?如果参数是数字,为什么函数返回 NaN?
【发布时间】:2020-11-13 12:23:29
【问题描述】:

计算第n个加泰罗尼亚语的函数不起作用(NaN) 首先,我为阶乘编写了一个函数,然后为 Catalan 编写了函数。所有的阶乘都算对了,答案的类型是数字,但是当我尝试对它们进行操作时,例如在我的函数中,我遇到了 NaN 的问题

function factorial(n) {
  var factorial = 1
  for (var i = 1; i <= n; i++) {
    factorial *= i
  }
  console.log(factorial)
}

function catalan(n) {
  var catalan = factorial(2 * n)
  catalan /= factorial(n + 1)
  catalan /= factorial(n)
  console.log(catalan)
}
catalan(3)

【问题讨论】:

  • 您的函数没有return 语句。
  • 将阶乘函数中的 console.log(factorial) 更改为 return factorial
  • 如前所述,你没有返回任何东西,但作为未来的提醒,typeof(NaN) === 'number',所以仅仅因为返回类型是数字并不意味着它不是NaN
  • 为什么要改那个console.log只写在console.log之后

标签: javascript function nan


【解决方案1】:

正如 cmets 中所述,您不会 return 函数中的任何内容。
试试这个:

function factorial(n) {
  var factorial = 1
  for (var i = 1; i <= n; i++) {
    factorial *= i
  }
  console.log("In factorial: factorial="+factorial)
  return factorial
}

function catalan(n) {
  var catalan = factorial(2 * n)
  catalan /= factorial(n + 1)
  catalan /= factorial(n)
  console.log("In catalan: catalan="+catalan)
  return catalan
}
catalan(3)

在我的控制台中,我看到:

In factorial: factorial=720
In factorial: factorial=24
In factorial: factorial=6
In catalan: catalan=5
5

【讨论】:

  • 这解决了你的代码吗?如果是这样:你能选择我的答案吗?
猜你喜欢
  • 2011-02-17
  • 2012-04-24
  • 2016-03-21
  • 1970-01-01
  • 2016-04-20
  • 2021-12-21
  • 2021-06-28
相关资源
最近更新 更多