给定一个arr大小的数组n,并且索引0<=i<n!我想返回第i个排列.
我能够编写一个获取所有排列的方法:
function permute (arr) {
var permutations = [];
if (arr.length === 1) {
return [ arr ];
}
for (var i = 0; i < arr.length; i++) {
var subPerms = permute(arr.slice(0, i).concat(arr.slice(i + 1)));
for (var j = 0; j < subPerms.length; j++) {
subPerms[j].unshift(arr[i]);
permutations.push(subPerms[j]);
}
}
return permutations;
}
Run Code Online (Sandbox Code Playgroud)
如何修剪它只获得递归的一个分支?