全排列递归算法python
时间: 2025-05-30 10:42:42 浏览: 26
### Python 实现全排列的递归算法
以下是基于递归方法实现全排列的经典代码示例:
#### 方法描述
递归的核心思想在于逐步构建子问题并解决它们。对于长度为 \( n \) 的列表,可以通过固定第一个元素并将剩余部分视为新的子问题来完成排列[^1]。
```python
def permute(nums):
result = []
# 边界条件:如果输入为空,则返回空集合
if len(nums) == 0:
return [[]]
# 如果只有一个元素,则只有一种排列方式
if len(nums) == 1:
return [nums[:]]
# 对于每一个元素作为起始位置的情况进行遍历
for i in range(len(nums)):
current_num = nums[i]
# 剩余的部分继续递归调用
remaining_nums = nums[:i] + nums[i+1:]
sub_permutations = permute(remaining_nums)
# 将当前数与后续排列组合起来
for p in sub_permutations:
result.append([current_num] + p)
return result
if __name__ == "__main__":
test_list = [1, 2, 3]
all_permutations = permute(test_list)
print(all_permutations)
```
上述代码实现了完整的递归逻辑,并能够处理任意大小的输入列表[^2]。
---
#### 关键点分析
1. **边界条件**
当 `nums` 列表为空时,返回 `[[]]` 表示一种可能的排列;当 `nums` 只有一个元素时,直接返回该单元素组成的列表[^4]。
2. **核心循环**
使用 `for` 循环枚举每个元素作为固定的首项,其余部分通过递归计算其所有可能的排列[^3]。
3. **结果拼接**
每次递归完成后,将当前选定的元素与递归得到的结果逐一拼接形成最终的排列。
---
#### 输出示例
假设输入列表为 `[1, 2, 3]`,运行以上代码会输出如下结果:
```plaintext
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
```
这表示了所有的可能排列情况。
---
阅读全文
相关推荐




















