我是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'
我编码中的问题是什么?
答案 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
语句。