我有一個遞歸函數的問題,在Array中查找nCr對象。
此功能僅在r=2
時表示僅在內部進入1級時纔有效。查找陣列項目的nCr組合
看來我暫時'a'
數組被全亂了的時候r > 2
// find nCr combinations in Array
// n -> keys.length
// r -> number of combination to extract (cross = r-1)
console.clear();
var keys = [0,1,2,3,4,5];
// cross = 'r'-1, s = start point, a = array
function recursive(cross, s, a){
for(var i=s; i < keys.length; i++){
if(!cross){
var b = a.slice(0);
b.push(keys[i]);
set.push(b);
}
else{
a.splice(-1, 1);
a.push(keys[i]);
recursive(cross-1, i+1, a);
}
}
}
var set = [];
recursive(1, 0, []);
console.log(set);
太簡單了。我感到尷尬 – vsync 2011-06-15 18:49:04
@vsync:不要。遞歸(和二進制搜索)是非常難以正確的;即使有經驗的程序員只有在最小心的情況下才能正確使用它。 – ShreevatsaR 2011-06-15 20:24:03
謝謝你的時間先生。非常感謝和肯定會幫助其他人可能遇到這種需要的東西。豎起大拇指! – vsync 2011-06-15 20:44:38