Как исправить эту комбинацию программы с использованием биномиального факторного уравнения? - PullRequest
0 голосов
/ 18 октября 2018

мой ответ на вопрос о количестве комбинаций, полученных при розыгрыше 3-х карт из 52, не совпадает.Как и 0 карт из 52 следует = 1, 1 следует = 52, 2 = 1326 и так далее.но у меня 0 = 1, 1 = 1, 2 = 52 и так далее.Что бы я изменил, чтобы достичь желаемого результата?Я думаю, что ошибка в def factorial (), но я не могу решить проблему, независимо от того, что я пытаюсь.

def factorial(num):
    i = 2
    if num == 0:
        num = 1
        print(num) 
    elif num > 1:
       for i in range(i, num):
            num = num * i
    return num

def combinations(n,r):
    l = n-r
    nn = factorial(n)
    rn = factorial(r)
    ln = factorial(l)

    result = nn / (rn * ln)

    print(result)
    return result

def main():
    h = 52
    a = 0
    while a<4:
        combinations(h,a)
        a = a + 1

1 Ответ

0 голосов
/ 18 октября 2018

Вы печатаете лишние материалы в факториале, что может привести к путанице.Я предлагаю вам распечатать ваш окончательный результат со сравнением с вашей переменной a в конце функции combinations следующим образом:

print("For a=" + str(r) + ", result=" + str(result))

Вот общий отредактированный код:

def factorial(num):
    if num == 0:
        num = 1


    elif num > 1:

       for i in range(2, num):    # Setting i=2 at the start is redundant
            num = num * i
    return num

def combinations(n,r):
    l = n-r

    nn = factorial(n)
    rn = factorial(r)
    ln = factorial(l)

    result = nn / (rn*ln)

    print("For a=" + str(r) + ", result=" + str(result))

    return

h = 52
a = 0

while a<4:
    combinations(h,a)

    a = a + 1
...