递归思路:
首先介绍void ff( int mm , int nn , int array[]);
mm就是选择的序号,nn就是选择的数,array就是保存的数组
找出结束条件:1.当选择的序号等于最大序号就选择完毕2.在不满足1的条件当选择的数等于最大数
找出递归:先把自己的数保存 然后再找寻下个数的所有条件
#include <iostream> using namespace std; int n,m; int array[100]; void ff(int mm,int nn,int array[]){ if(mm==m){//当选到最后一个数时 if(nn<=n){ array[mm]=nn; for(int i=1;i<=m;i++)cout<<array[i]<<" "; cout<<endl; return; } } if(nn==n)return;//当选择的数是最后一个 但选择序号并不是最后一个 array[mm]=nn; for(int i=nn+1;i<=n;i++){ ff(mm+1,i,array); } } int main() { cin>>n>>m; ff(0,0,array); }