全排列[开心贴]

经过断断续续的努力,终于做出了全排列方法 /开心

n个元素全排列思路:
1,第一个位置放置元素有n种方式
2,选择一个元素放在第一个位置
3,第二个位置放置元素有 n-1 种方式
4,以此类推. (阶乘)

递归思路:网上有系统思路,自己想会废头发
1,f(n) = n * f(n-1)
2,f(1) = 1
3,实现思路:讲不清 /尴尬

代码
    def de(li:list,pre=[]):
        l = len(li)
        if l > 0:
            for i in range(l):
                po = li.pop(i)
                lis = list(li)
                li.insert(-l,po)

                # 递归调用
                pre.append(po)
                de(lis,pre)
                pre.pop(-1)
                # 列表恢复原样
                li.pop(-l)
                li.insert(i,po)
        else:
            print(pre + li)
    de(['a','b','c','d'])