SOURCE

/**
 * @param {number} n
 * @param {number} k
 * @return {number[][]}
 */
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){
        // console.log(111);
        if(path.length == k){
            result.push(path.concat([]));
            return;
        }
        // 已经选择的个数 path.length
        // 还需要选择的个数 k - path.length
        // 集合至多的起始位置  n-(k-path.length)+1
        console.log('***********');
        console.log((n-(k-path.length)+1));
        for(var i = index;i<=(n-(k-path.length)+1);i++){
            path.push(i);
            backtracking(i+1);
            path.pop();
        }
    }
    backtracking(startIndex);
    console.log(result);
    return result
};
combine(4,4)
console 命令行工具 X clear

                    
>
console