Для данного массива 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;
}
Как мне обрезать его, чтобы получить только одну ветвь рекурсии?