思路
设计递归函数 p(int least , int pos , int n) ,代表pos位置可以用的最小值是least,可以用的最大值是n, 这样 程序如下:,递归终止条件是 可以用的最小值超过可以用的最大值
程序
#include<iostream>
using namespace std;
int ans[15];
void print(int n){
for ( int i = 0 ; i < n ; i++){
if(i) cout<<' '; cout << ans[i];
}
cout << endl;
return ;
}
void p(int least ,int pos ,int N){
if (least > N) return;
for (int st = least ; st <= N ; ++st){
ans[pos] = st;
print(pos+1);
p(st +1 , pos + 1 , N);
}
}
int main(){
int n;
cin >> n;
p(1,0,n);
}