字符串
function all(str) {
if (!str) return []
let res = []
if (str.length == 1) {
res.push(str)
} else if (str.length > 1) {
//遍历每一项
for (let i = 0; i < str.length; i++) {
//拿到当前的元素
var left = str[i]
//除当前元素的其他元素组合
var rest = str.slice(0, i) + str.slice(i + 1, str.length)
//上一次递归返回的全排列
var preResult = all(rest)
//组合在一起
for (var j = 0; j < preResult.length; j++) {
var tmp = left + preResult[j]
res.push(tmp)
}
}
}
return res
}数组
function arrall(arr) {
if (!arr) return []
var res = []
if (arr.length > 1) {
for (var i = 0; i < arr.length; i++) {
var tem = []
var left = arr[i]
tem.push(left)
var rest = arr.slice(0, i).concat(arr.slice(i + 1, arr.length))
var preResult = arrall(rest)
// console.log(preResult);
for (var j = 0; j < preResult.length; j++) {
var tmp = tem.concat(preResult[j])
res.push(tmp)
}
}
} else {
res.push([arr])
}
return res
}
京公网安备 11010502036488号