把递归出口改为1
function f(arr) {
var result = []
if (arr.length === 2) {
return [
[arr[0], arr[1]],
[arr[1], arr[0]]
]
}
var lastResult = f(arr.slice(1))
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < lastResult.length; j++) {
result.push([...lastResult[j].slice(0, i), arr[0], ...lastResult[j].slice(i)])
}
}
return result
}
console.log(f([1, 2, 3, 4]));