Mam kod, który oblicza liczby katalońskie metodą współczynników binominalnych.Python obliczanie liczb katalońskich
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))
Mam „nan” Wynik gdy próbuję obliczyć liczbę katalońskiej którym n wynosi ponad 510. Dlaczego tak się dzieje? I jak mogę to rozwiązać?
Otrzymujesz 'nan', ponieważ' BinominalCoefficient (1022, 511) 'zwraca' inf'. –
Czy używasz Pythona 3? Jeśli tak, użyj podziału liczb całkowitych '//', aby uniknąć pływaków (i tak nie potrzebujesz ich do tego obliczenia). –
Jakiej wersji pythonu używasz? Dostaję poprawne wyniki zarówno w pythonie 2.6.6, jak iw pythonie 3.4.3 –