评估python中的组合

时间:2017-09-21 14:49:08

标签: python math combinations

我是python用户,我在python中评估组合。

对于两个整数m,n,nCm = n!/(m!*(n-m)!)

所以,我定义了阶乘和组合函数。

阶乘函数正在运行,但组合功能不起作用。

错误是什么?

1>因子函数

def factorial(a):
    f=1
    for i in range(1,a+1):
        f=f*i
print(f)

2 - ;组合功能

def Combination(n,m):
    fn=factorial(n)
    fm=factorial(m)
    fnm=factorial(n-m)
    ncm=factorial(n)/(factorial(m)*factorial(n-m))
    print(ncm)

在阶乘函数中,例如,factorial(4)= 24在python中工作。

但是,在组合功能中,

当我输入组合(4,2)时,

    24
2
2
24
2
2
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-daae2b10838c> in <module>()
----> 1 Combination(4,2)

<ipython-input-17-76c6e425ad35> in Combination(n, m)
      3     fm=factorial(m)
      4     fnm=factorial(n-m)
----> 5     ncm=factorial(n)/(factorial(m)*factorial(n-m))
      6     print(ncm)
      7 

TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'

我编码中的问题是什么?

2 个答案:

答案 0 :(得分:0)

而不是printing函数的输出,您应该return结果。

def factorial(a):
    f=1
    for i in range(1,a+1):
        f=f*i
    return f

def combination(n,m):
    return = factorial(n)/(factorial(m)*factorial(n-m))

print combination(4,2)

还有一句话:在计算factorial(n)后,它会存储在您的fn变量中。你不应该再计算它,而是取这个值并“回收”它。

答案 1 :(得分:0)

def factorial(a):
    f=1
    for i in range(1,a+1):
        f=f*i
    return f

def Combination(n,m):
    fn=factorial(n)
    fm=factorial(m)
    fnm=factorial(n-m)
    ncm=fn/(fm*fnm)
    print(ncm)

Combination(4,2)

在您的代码中,return中缺少factorial function语句。