用递归算法找出 5 个自然数中取 3 个数的组合。
时间: 2023-06-05 13:48:09 浏览: 98
python 利用递归方法求5!(示例)
5星 · 资源好评率100%
可以使用递归算法来找出 5 个自然数中取 3 个数的组合。具体实现方法如下:
1. 定义一个递归函数,函数参数包括当前已选的数字列表、当前可选的数字列表和需要选的数字个数。
2. 在递归函数中,如果需要选的数字个数为 ,则输出当前已选的数字列表,表示找到了一组组合。
3. 如果当前可选的数字列表为空,则直接返回,表示已经没有数字可选了。
4. 对于当前可选的数字列表,依次选取一个数字,将其加入已选的数字列表中,然后递归调用函数,需要选的数字个数减 1,可选的数字列表从下一个数字开始。
5. 递归调用结束后,将已选的数字列表中最后一个数字移除,继续循环选取下一个数字进行递归调用。
6. 最终可以找到所有的组合。
例如,对于 5 个自然数中取 3 个数的组合,可以调用递归函数 find_combinations([], [1, 2, 3, 4, 5], 3),其中第一个参数为当前已选的数字列表,第二个参数为当前可选的数字列表,第三个参数为需要选的数字个数。
具体实现代码如下:
```
def find_combinations(selected, choices, count):
if count == :
print(selected)
return
if not choices:
return
for i, choice in enumerate(choices):
selected.append(choice)
find_combinations(selected, choices[i+1:], count-1)
selected.pop()
find_combinations([], [1, 2, 3, 4, 5], 3)
```
输出结果为:
```
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 4]
[1, 3, 5]
[1, 4, 5]
[2, 3, 4]
[2, 3, 5]
[2, 4, 5]
[3, 4, 5]
```
阅读全文