python使用递归和函数的方法计算: 班里有m个同学,老师任选n个人去教室打扫卫生,一共有多少种可能,输出所有可能的组合。
时间: 2024-02-28 16:57:22 浏览: 65
用递归法计算从n个正整数中选择k个数的不同组合数
4星 · 用户满意度95%
可以使用递归和函数的方式来计算班里选出n个人的所有可能的组合,具体的代码实现如下:
```python
def combine(n, m):
"""
计算班里选出n个人的所有可能的组合
:param n: 选出的人数
:param m: 班里的总人数
:return: 所有可能的组合
"""
if n == 0 or n == m:
return [[i for i in range(1, n+1)]]
else:
result = combine(n-1, m-1)
for item in result:
item.append(m)
return result + combine(n, m-1)
m = int(input("请输入班里的总人数:"))
n = int(input("请输入选出的人数:"))
result = combine(n, m)
print("一共有%d种可能,所有可能的组合如下:" % len(result))
for item in result:
print(item)
```
首先定义了一个 `combine` 函数,该函数接受两个参数 `n` 和 `m`,分别表示选出的人数和班里的总人数。当 `n` 等于 0 或 `n` 等于 `m` 时,直接返回一个包含从 1 到 `n` 或从 `m-n+1` 到 `m` 的列表,否则递归调用 `combine(n-1, m-1)` 和 `combine(n, m-1)` 来计算所有可能的组合。对于 `combine(n-1, m-1)` 中的每个结果,将 `m` 添加到末尾,得到新的结果。最后将两个结果合并并返回。
接着使用 `input` 函数分别输入班里的总人数 `m` 和选出的人数 `n`。然后调用 `combine` 函数来计算所有可能的组合,并将结果保存在 `result` 变量中。最后使用 `print` 函数输出结果。
阅读全文