用python编写一个用递归算法实现的组合问题
时间: 2023-09-15 19:20:00 浏览: 243
一个组合数问题(递归完成)
5星 · 资源好评率100%
以下是使用递归算法解决组合问题的Python代码:
```python
def combinations(n, k):
if k == 0 or k == n:
return 1
else:
return combinations(n-1, k-1) + combinations(n-1, k)
n = int(input("请输入n的值:"))
k = int(input("请输入k的值:"))
result = combinations(n, k)
print("{}个元素中选取{}个元素的组合数为:{}".format(n, k, result))
```
解释:
首先定义了一个函数`combinations(n, k)`,接受两个参数n和k,表示从n个元素中选取k个元素的组合数。
如果k=0或者k=n,表示选取0个元素或者选取全部n个元素,此时组合数为1。
对于其他情况,我们可以把选取k个元素的方案分成两类:包含第n个元素和不包含第n个元素。如果包含第n个元素,那么从剩下的n-1个元素中选取k-1个元素;如果不包含第n个元素,那么从剩下的n-1个元素中选取k个元素。因此,选取k个元素的组合数等于包含第n个元素的方案数加上不包含第n个元素的方案数。
最后,我们可以在主程序中输入n和k的值,调用`combinations(n, k)`函数计算组合数,并输出结果。
示例输出:
```
请输入n的值:5
请输入k的值:3
5个元素中选取3个元素的组合数为:10
```
阅读全文