給定1,2,3,。。。,n(n>=1), 從n個數中選擇m(m<=n)個數,求所有組合個數
遞歸實現:
var data = [1,2,3,4,5];
var output = [];
function outputAll(start, count){
console.log(start + "," + count); //跟蹤調用過程
if(start < 0 || start > data.length || data.length - start < count || count < 0){ //參數校驗
return;
}
if(count == 0){ //遞歸終止
console.log(output);
return;
}
var i = start;
for(i = start; i < data.length && data.length - i >= count; ++i){ //核心遞歸 "根 左 右"的訪問深度優先 多叉樹遞歸
output.push(data[i]);
outputAll(i + 1, count - 1);
output.pop();
}
}
outputAll(1,2);
outputAll(0, 5);