经过断断续续的努力,终于做出了全排列方法 /开心
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'])