全排列组合参考代码

root
abc abc
def permute(nums, start, end):
    # 如果起始索引等于结束索引,说明已经排列好了一个组合
    if start == end:
        print(nums[:])  # 打印当前排列
    else:
        # 遍历从起始索引到结束索引的每个元素
        for i in range(start, end + 1):
            # 交换起始索引和当前遍历到的索引位置的元素
            nums[start], nums[i] = nums[i], nums[start]
            # 递归调用permute函数,起始索引加1,继续排列剩余的元素
            permute(nums, start + 1, end)
            # 回溯,将元素交换回来,以便进行下一次排列
            nums[start], nums[i] = nums[i], nums[start]

# 定义列表数据
data = [1, 2, 3, 4]

# 调用permute函数进行全排列
permute(data, 0, len(data) - 1)