全排列算法:

思路:使用递归,递归函数的接收两个参数,cur数组和rest数组 退出条件是cur数组中的数已经填充满了, 循环rest数组遍历所有能填充的情况 每次填充完一个数后要递归进去填充,填充完之后记得把数拿回原来的位置,以在下一次循环中使用         // 全排列


let arr = [1, 2, 3]

let cur = [] let r = [] let len = arr.length


function permutation(cur, rest) {


if (cur.length === len) {

r.push([...cur]) return }


for (let i = 0; i < rest.length; i++) {


// 从rest中取出一个元素放到cur中

cur.push(rest[i]) rest.splice(i, 1)


// 向下执行

permutation(cur, rest)


// 将放进去的元素再拿回来

rest.splice(i, 0, cur.pop()) } }



permutation(cur, arr)



console.log(r);