//by canancat
//组合数,Cnk,利用递归从n个人里选k个人。但是又不完全一样,CNK要n>=k,否则报错。但是居委会问题此时报0
//要知道对应的数学公式。
#include <iostream>
using namespace std;
int comm(int n,int k);
int main() {
int n,k;
cout<<"plz enter two integers n and k: ";
cin>>n>>k;
cout<<"C(n,k)="<<comm(n,k)<<endl;
return 0;
}
int comm(int n,int k){
if(n<k)
return 0;//这里的意思是2个人里选4个人,可行性方案是0。
else if(n==k||k==0) return 1;//可以将n==k与k==1分别用两个else if语句来表达
else return comm(n-1,k)+comm(n-1,k-1);//对应的数学公式
}//从本程序中体会到if,elseif之间不是平行关系,而是分支关系。执行if之后就不会再执行后面的else if的句子,else if是else的一种情况。
//if与if之间是并列关系,按照顺序执行。