编写一个递归算法,找出从自然数1,2,3,。。。,n中任取r个数的所有组合.
递归算法代码如下:
- #include<iostream>
- using namespace std;
- int sum[100];
- void function(int m,int k)
- {
- int i,j;
- for(i=m;i>=k;i--)
- {
- a[k]=i;
- if(k>1)
- function(i-1,k-1);
- else
- {
- for(j=a[0];j>0;j--)
- cout<<a[j]<<"\t";
- cout<<endl;
- }
- }
- }
- int main()
- {
- int n,r;
- cout<<"请输入n和r的值:"<<endl;
- cin>>n>>r;
- if(r>n)
- cout<<"输入n和r的值错误!"<<endl;
- else
- {
- a[0]=r;
- function(n,r);
- }
- return 0;
- }