问题:递归求n个人中选k个人组成组委会,求选择的不同组合数
1、当n=k和k=0时都只有一种办法,
2、在n个人中选k个人=在n-1个人中选k个人+在n-1各人中选k-1个人
#include<iostream>
using namespace std;
//递归求n个人中选k个组成组委会,求选择的不同组合数
int common(int n,int k)
{
if(k>n)
return 0;
else if(k==0||n==k)
return 1;
else
return common(n-1,k)+common(n-1,k-1);
}
int main()
{
int n,k;
cout<<"Please input two integers n and k:";
cin>>n>>k;
cout<<"C(n,k)="<<common(n,k)<<endl;
system("pause");
return 0;
}
理解:下图是我根据断点调试整理的运行过程,也算是理解了这个递归的过程吧