題目
從n個人中選選k個人組成一個委員會的不同組合數。
解答
分析
從n-1個人到n個人,增加一個人,這個人可能被選中,也可能不被選中。若第n個人被選中則是從n-1個人中選擇k-1個人,若第n個人沒被選中,則是從n-1個人中選擇k個人。即得以下公式:
由n個人裏選k個人的組合數= 由n-1個人裏選k個人的組合數+由n-1個人裏選k-1個人的組合數;
遞歸法得出推導公式:
F(n,0) = 1;
F(n,k=n)=1;
F(n,k) = F(n-1,k)+F(n-1,k-1)
代碼
C++語言代碼實現
int getKfromN(int n ,int k){
if(n<k){
return 0;
}else if(n==k || k==0){
return 1;
}else{
return getKfromN(n-1,k-1)+getKfromN(n-1,k);
}
}