#include #define NMAX 16 void se(int m,int i,int t[]) { if(n == 0) { printf("{"); for (i--; i >= 0 ; i--) printf("%d ",t[i]); printf("}\n"); } else { se(m-1,i,t); t[i] = m; se(m-1,i+1,t); } } void main(void) { int n; int t[NMAX]; do { printf("Sous-ensembles de 1..n, n="); scanf("%d",&n); } while (n < 0 || n > NMAX); se(n,0,t); }