用递归算法来计算全排列输出1-n的数的所有排列
时间: 2024-03-22 20:36:59 浏览: 65
递归全排列算法
好的,下面是用递归算法来计算全排列输出1-n的数的所有排列的Python代码:
```python
def permute(nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
# 递归结束条件
if len(nums) == 1:
return [nums]
result = []
# 对于每个数字,将其与其它数字交换位置,然后递归调用permute函数
for i in range(len(nums)):
for perm in permute(nums[:i] + nums[i+1:]):
result.append([nums[i]] + perm)
return result
n = 5 # 定义n为5
nums = list(range(1, n+1)) # 生成1到n的数的列表
res = permute(nums) # 计算全排列
print(res) # 输出结果
```
这段代码定义了一个函数permute,它的输入参数是一个整数列表nums,输出是这个列表所有可能的排列。在主函数中,我们定义了n为5,然后生成1到n的数的列表。最后,我们调用permute函数计算全排列,并输出结果。
注意,这个函数的时间复杂度是O(n!),因为它需要生成n!个排列。如果输入列表太大,这个函数的运行时间将非常长。
阅读全文