不用递归,简单循环搞定
一共$2^n$种情况,直接暴力枚举即可。程序如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n; cin >> n;
int state = pow(2, n)+0.5;
for(int i = 0; i < state; i++)
{
for(int j = 0; j < n; j++)
if(i>>j&1) cout << j+1 << " ";
cout << endl;
}
return 0;
}