1 /**
2 * @param {number} n
3 * @param {number} k
4 * @return {number[][]}
5 */
6 var combine = function (n, k) {
7 let result = []; // 存储结果
8 let subResult = []; // 存储每次排列的结果
9 let used = new Array(n + 1).fill(false); // 通过index对应的布尔值,标识各个值是否被使用,index即代表了从1~n的值
10 function dfs(current) {
11 if (subResult.length === k) {
12 result.push(subResult.slice());
13 return;
14 }
15 for (let i = current; i < used.length; i++) {
16 if (used[i]) {
17 continue;
18 }
19 used[i] = true;
20 subResult.push(i);
21 dfs(i);
22 used[i] = false;
23 subResult.pop();
24 }
25 }
26 dfs(1);
27 return result;
28 };