Ho codice che sta calcolando i numeri catalani con il metodo dei coefficienti binominali.Python che calcola i numeri catalani
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))
Ho un risultato "nan" quando si tenta di calcolare il numero catalana, che n è più di 510. Perché questo sta accadendo? E come posso risolverlo?
Si ottiene 'nan' perché' BinominalCoefficient (1022, 511) 'restituisce' inf'. –
Stai usando Python 3? In tal caso, utilizzare la divisione intera '//' per evitare i float (non sono comunque necessari per questo calcolo). –
Quale versione di Python stai usando? Ottengo risultati corretti sia in Python 2.6.6 che in Python 3.4.3 –