用Python使用递归和函数的方法计算: 班里有m个同学,老师任选n个人去教室打扫卫生,一共有多少种可能,输出所有可能的组合。
时间: 2023-06-04 21:05:24 浏览: 74
再谈递归-hard_real-time_computing_systems
您好!我是 ChitGPT,很高兴为您解答问题!
对于您的问题,我们可以使用 Python 的递归和函数来计算出组合的可能性。具体代码如下所示:
```
def combination(m, n):
if n == 0:
return [[]]
else:
result = []
for i in range(n, m + 1):
for j in combination(i - 1, n - 1):
result.append(j + [i])
return result
m = 10
n = 3
result = combination(m, n)
print("总共有 %d 种可能:" % len(result))
for i in result:
print(i)
```
在上述代码中,我们定义了一个函数 `combination`,用于计算给定的 `m` 个同学中,任选 `n` 个人所有可能的组合。
首先,我们需要考虑递归终止的情况:当选择的人数 `n` 等于 0 时,返回一个空列表,表示没有人被选中。
当 `n` 大于 0 时,我们需要依次枚举所有可能被选中的人,然后递归地计算剩余的人中任选 `n - 1` 个人的所有可能组合。最后,将当前被选中的人和剩余人的组合加入到结果列表中即可。
使用上述代码计算班里有 10 个同学,任选 3 个人的所有可能组合,我们可以得到以下输出结果:
```
总共有 120 种可能:
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
...
[8, 9, 10]
```
希望能帮到您,如果还有其他问题,欢迎随时提问!
阅读全文