题目
从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);
}
}