编写python递归程序,输出给定数据的全排列,及排列个数
时间: 2023-08-06 13:08:59 浏览: 97
cycle_output.rar_python_循环输出_数据结构_矩阵_递归
以下是一个Python递归程序,用于输出给定数据的全排列及排列个数:
```python
def permutation(data, start, end):
if start == end:
print(data)
return 1
count = 0
for i in range(start, end + 1):
data[start], data[i] = data[i], data[start]
count += permutation(data, start + 1, end)
data[start], data[i] = data[i], data[start]
return count
data = [1, 2, 3]
n = len(data)
count = permutation(data, 0, n - 1)
print("Total permutations:", count)
```
解释一下程序的思路:
- `data` 是输入的列表,`start` 和 `end` 分别表示当前需要排列的数据的起始索引和结束索引(包含在内)。
- 当 `start` 等于 `end` 时,表示已经排列完所有数据,此时输出排列结果。
- 对于当前需要排列的数据,从 `start` 到 `end` 中的每一个位置都可以作为当前位置的值,因此需要将当前位置的值与之后每一个位置的值交换,并递归排列之后的数据。
- 在交换值之前需要将当前位置的值记录下来,以便在递归完成之后将其还原回来。
- 递归返回结果表示当前需要排列的数据总共有多少种排列方式。
以上程序的输出结果如下:
```
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
Total permutations: 6
```
可以看到,程序输出了 `data` 中所有元素的全排列,并且排列个数为 6。
阅读全文