使用Python递归实现全排列

150 阅读1分钟

整体思路

1:确定两个列表
2:一个列表是用来存放需要全排列的数
3:另一个列表是用来存放已经排列好的数
4:将上面两个列表不断进行递归
5:最后结果列表里添加的是最后排列好的列表

代码

import math
import copy
# 定义全排列的函数

def permutation(need_perm, Already_perm):
    global temp_list

    if len(need_perm) == 0:
        temp_list.append(Already_perm)
        return

    for i, element in enumerate(need_perm):

        permutation(need_perm[:i]+need_perm[i+1:], Already_perm+[element])

    return temp_list


if __name__ == "__main__":

    user_input = eval('['+input("请输入需要全排列的数字:")+']')

    temp_list = []

    permutation(user_input, [])

    print(temp_list)

结果