我有一段用二项式系数法计算卡特兰数的代码。
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))
当我尝试计算大于510的卡特兰数时,结果显示为“nan”。这是怎么回事?我该如何解决?
nan
,因为BinominalCoefficient(1022, 511)
返回了inf
。 - James Pringle//
来避免浮点数(无论如何,你都不需要它们进行这个计算)。 - Alex Riley