2016-03-04 6 views
-2

Я не уверен, связано ли это с функцией math.factorial или связано с каким-то приведением типов или что-то еще. Это то, что я знаю:Проблемы с факториальными результатами Python

>>> factorial(52)/ (factorial(52-48) - factorial(48)) 
-6497401L 

Итак, с этим кодом я пытаюсь вычислить число возможных комбинаций набора из 52 различных элементов, взятых в группах 48. И в результате я получаю отрицательный номер, что не имеет никакого смысла.

Любые идеи, почему это происходит?

+2

'факторный (52-48)' 'означает факториал (4)'. Если вы вычтите «factorial (48)», вы получите отрицательное число. – Selcuk

+2

Вы получаете отрицательное число, потому что 'factorial (52-48)' такое же, как 'factorial (4)', что отрицательно, когда вы вычитаете из него 'factorial (48)'. С положительным числителем и отрицательным знаменателем вы обязательно получите отрицательный результат. – zondo

+0

А, я вижу. Я сделал опечатку и поставил - где я должен был положить *. –

ответ

3

Ваша математика неверна. Это должно быть N!/(S! * (S - N)!) - вы вычитание вместо умножения в знаменателе:

>>> factorial(52)/(factorial(52-48) * factorial(48)) 
270725L 
+0

OP хотел бы удалить этот Q, потому что это просто опечатка. –