【问题标题】:how to fix this combination program using binomial factorial equation?如何使用二项阶乘方程修复这个组合程序?
【发布时间】:2018-10-18 01:19:11
【问题描述】:

我的答案是在从 52 张牌中抽出 3 张牌的情况下找出组合的数量。就像 52 中的 0 张卡片应该 = 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

【问题讨论】:

  • range(i, num): -> range(i, num + 1): 结束参数是排除。

标签: python function statistics combinations


【解决方案1】:

您在阶乘中打印了额外的内容,这可能会导致混淆。我建议您打印出最终结果,并与 combinations 函数末尾的 a 变量进行比较,如下所示:

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

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多