1
const dfs = (path, visited, result, numbers, limit) => {2
// return if we already reached the permutation needed3
if (result.length === limit) {8
if (path.length === numbers.length) {9
result.push(path.join(""));13
// easier to reason and less prone to miss the -1 offset of normal for loop14
for (const [index, number] of numbers.entries()) {15
if (visited[index]) continue;18
visited[index] = true;19
dfs(path, visited, result, numbers);21
visited[index] = false;25
var getPermutation = function (n, k) {26
const numbers = Array.from({ length: n }, (_, i) => i + 1);27
let visitedNumbers = Array.from(numbers, () => false);29
dfs([], visitedNumbers, result, numbers, k);