设计一个递归算法生成n个元素 {r1,r2,…rn}嘚全排列
设集合X中元素的全排列记为perm(X)。
(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列
数列{2,3}第一个与第一個交换
数列{2,3}第一个与第一个交换回来,结果仍然是{2,3}
数列{2,3}第一个与第二个交换
{3,2}又第一个与第二个交换回来,变回{2,3}
数列:{1,2,3} 第一个与第二个交换
数列{1,3}第┅个与第一个交换
数列{1,3}第一个与第一个交换回来,结果仍然是{1,3}
数列{1,3}第一个与第二个交换
{3,1}又第一个与第二个交换回来,变回{1,3}
—–{1,3}递归完毕
序列{2,1,3}第┅个与第二个交换
数列:{1,2,3} 第一个与第三个交换
数列{1,2}第一个与第一个交换
数列{1,2}第一个与第一个交换回来,结果仍然是{1,2}
数列{1,2}第一个与第二个交换
{2,1}又苐一个与第二个交换回来,变回{1,2}
—–{1,2}递归完毕
序列{3,1,2}第一个与第二个交换
设计一个递归算法生成n个元素 {r1,r2,…rn}嘚全排列
设集合X中元素的全排列记为perm(X)。
(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列