全排列算法

全排列算法:
思路:使用递归,递归函数的接收两个参数,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);
posted @ 2020-07-08 16:07  hh9515  阅读(134)  评论(0)    收藏  举报