python 使用递归和函数的方法计算: 班里有m个同学,老师任选n个人去教室打扫卫生,一共有多少种可能,输出所有可能的组合。
时间: 2024-02-28 18:56:54 浏览: 101
好的,我可以为你解答这个问题。这个问题可以用组合数学中的组合公式来计算,即从m个元素中选n个元素,有C(m,n)种组合方式,其中C(m,n)表示m个元素中选n个元素的组合数。
代码如下:
```python
def combinations(m, n):
if n == 0 or n == m:
return 1
else:
return combinations(m - 1, n - 1) + combinations(m - 1, n)
def generate_combinations(m, n):
result = []
def generate_combinations_helper(start, count, combination):
if count == n:
result.append(combination)
return
for i in range(start, m):
generate_combinations_helper(i + 1, count + 1, combination + [i])
generate_combinations_helper(0, 0, [])
return result
m = 5
n = 3
print('一共有{}种可能的组合:'.format(combinations(m, n)))
print(generate_combinations(m, n))
```
在代码中,我们首先定义了递归函数`combinations`来计算组合数,然后定义了函数`generate_combinations`来生成所有可能的组合。在`generate_combinations`函数中,我们使用了递归和回溯的方法来生成所有可能的组合。
最后,我们调用`combinations`函数计算组合数,调用`generate_combinations`函数生成所有可能的组合,并输出结果。在输出结果时,我们可以将组合表示为一个列表,其中列表中的元素表示选中的同学的编号。例如,[0, 2, 4]表示选中了第1个、第3个和第5个同学。
阅读全文