给定两个非负整数 m 和 n,编写函数计算组合数(m choose n) = n! /(m! * (n-m)!)
时间: 2024-02-12 07:07:43 浏览: 122
好的,这是一个经典的组合数计算问题,可以使用递归或循环来实现。以下是使用循环的一个例子:
```python
def combination(m, n):
if m < 0 or n < 0 or m > n:
return 0
if m == 0 or m == n:
return 1
result = 1
for i in range(1, m+1):
result *= (n-i+1)
result //= i
return result
```
在这个例子中,我们首先判断输入的参数是否合法,然后使用循环计算组合数。具体来说,我们从 1 到 m 遍历,每次将 n-i+1 乘到结果中,再将 i 除到结果中,最后返回结果即可。
希望这个例子能够帮助你理解如何计算组合数。
相关问题
给定两个非负整数 m 和 n,编写函数计算组合数(m choose n) = n! /(m! * (n-m)!)Python 编写
可以使用math库中的阶乘函数来计算组合数,代码如下:
```python
import math
def combination(m, n):
return math.factorial(n) // (math.factorial(m) * math.factorial(n-m))
# 示例
print(combination(2, 4)) # 输出6
```
注意,使用 // 运算符可以保证在Python 3中进行整数除法,确保结果是整数。
给定两个非负整数 m 和 n,编写函数计算组合数 ),
我了解您的问题。组合数 (m choose n) 可以用以下公式计算:
(m choose n) = m! /n! * (m-n!)
其中,! 表阶乘运算,即n! = n *n-1) * (-2) * ...2 * 1
因此,您可以使用以下 Python 代码实现该函数:
```python
def combination(m, n):
if n > m:
return 0
numerator = 1
denominator = 1
for i in range(n):
numerator *= m-i
denominator *= i+1
return numerator // denominator
```
该函数首先检查 n 是否大于 m,如果是,则返回 0。否则,它使用循环来计算分子和分母的值,并使用整数除法来返回结果。
阅读全文