/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
/*
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}
*/
// var combine = function(n, k) {
// combine(4,2);
var combine = function(n, k) {
// [1,2][1,3]
var result = [];
// [1,2]
var path = [];
// startIndex
var startIndex = 1;
// n k startindex
function backtracking (index){
if(path.length == k){
result.push(path.concat([]));
return;
}
for(var i = index;i<=n;i++){
path.push(i);
backtracking(i+1);
path.pop();
}
}
backtracking(startIndex);
};
combine(4,2);
console