如何使用二项式阶乘方程修复此组合程序?

时间:2018-10-18 01:19:11

标签: python function statistics combinations

我的答案是找出给定52张纸牌中的3张纸牌的组合数。像52张卡片中的0张应该= 1,1应该= 52,2 = 1326等等。但我有0 = 1、1 = 1、2 = 52,依此类推。我将进行哪些修改以达到期望的结果?我认为错误出在def factorial()中,但是无论我如何尝试,我似乎都无法修复/找到问题。

var a = 3;
return a;

1 个答案:

答案 0 :(得分:0)

您正在打印多余的东西,可能会导致混乱。建议您打印出最终结果,并与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