题目
- 通过递归的方式, 将参数的
n
和k
分别-1.
- 直到
k
为1时, 得到所需的第一位可能出现的集合.
k
大于1时, 递归所得数组进行循环, 将数组中的最后个值与当前n
值之间的全部数据插入进去, 返回数组进入下个递归.
- 直到递归结束. 得到结果集
/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function(n, k) {
if (k === 1) {
const results = new Array(n)
for (let i = 0; i < n; i++) {
results[i] = [i + 1]
}
return results
}
const results = []
const temp = combine(n - 1, k - 1)
temp.forEach(result => {
for (let i = result[result.length - 1] + 1; i <= n; i++) {
results.push([...result, i])
}
})
return results
};