递归思路:
首先介绍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);
}