如果参数是数字,为啥函数返回 NaN?

Posted

技术标签:

【中文标题】如果参数是数字,为啥函数返回 NaN?【英文标题】: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之后 【参考方案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

【讨论】:

这解决了你的代码吗?如果是这样:你能选择我的答案吗?

以上是关于如果参数是数字,为啥函数返回 NaN?的主要内容,如果未能解决你的问题,请参考以下文章

matlab corr2函数为啥返回NaN值?

为啥 parseInt("0x") 返回 NaN [重复]

为啥 Math.round() 为 NaN 参数返回 0?

js中为啥NaN的返回类型为number

为啥这个函数返回 NaN?

Namber函数