编程求解:输入两个整数n和m从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
这也是一个典型的运用递归的例子,对于某一个数的选择可以是取或者是不取,于是有下面的递归代码
void FindSum(int m,int n){
if(m<1 || n<1 || (n==1 && m!=1)){
return;
}
if(m == n){
pOut[n] = 1;
for(int i=1;i<=N;i++){
if(pOut[i]==1)
cout<<i<<"\t";
}
cout<<endl;
pOut[n] = 0;
}
FindSum(m,n-1);//第n个数不取
pOut[n] = 1;
FindSum(m-n,n-1);//第n个数取
pOut[n] = 0;//重置标志位
}