【发布时间】:2015-07-16 16:29:27
【问题描述】:
我有使用二项式系数方法计算加泰罗尼亚数字的代码。
def BinominalCoefficient(n,k):
res = 1;
if (k > n - k):
k = n - k
for i in range(k):
res *= (n - i)
res /= (i + 1)
return res
def CatalanNumbers(n):
c = BinominalCoefficient(2*n, n)
return (c//(n+1))
print (CatalanNumbers(510))
当我尝试计算 n 大于 510 的加泰罗尼亚数时,我得到一个“nan”结果。为什么会这样?我该如何解决?
【问题讨论】:
-
你得到
nan,因为BinominalCoefficient(1022, 511)返回inf。 -
您使用的是 Python 3 吗?如果是这样,请使用整数除法
//来避免浮点数(无论如何,您不需要它们进行此计算)。 -
你用的是什么python版本?我在 python 2.6.6 和 python 3.4.3 中都得到了正确的结果
-
我使用的是 Python 3.4.3