转自《c++语言程序设计(第4版)》
用递归法计算从n个人中选择k个人组成一个委员会的不同组合数
分析:由n个人里选k个人的组合数 = 由n-1个人里选k个人的组合数 + 由n-1个人里选k-1个人的组合数
由于计算公式本身是递归的,因此可以编写一个递归函数来完成这一功能,递推的结果结束条件是n==k或k==0,这是的组合数为1,然后开始回归。
源程序:
#include <iostream>
using namespace std;
int comm(int n,int k){
if(k>n)
return 0;
else if(n==k||k==0)
return 1;
else
return comm(n-1,k)+comm(n-1,k-1);
}
int main(){
int n,k;
cout<<"Please enter two integers n and k: ";
cin>>n>>k;
cout<<"C(n, k)="<<comm(n,k)<<endl;
return 0;
}