如果参数是数字,为啥函数返回 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?的主要内容,如果未能解决你的问题,请参考以下文章