У меня есть код, который вычисляет каталитические числа с помощью метода биномиальных коэффициентов.Python вычисляет каталонские числа
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', потому что' BinominalCoefficient (1022, 511) 'возвращает' inf'. –
Вы используете Python 3? Если это так, используйте целочисленное деление '//', чтобы избежать float (в любом случае они не нужны для этого вычисления). –
Какую версию python вы используете? Я получаю правильные результаты как в python 2.6.6, так и в python 3.4.3 –