Originariamente inviato da ale500
magari così è più leggibile.

codice:
SOTTOINSIEMI(SOL,K,N) 
   IF K=N THEN
      STAMPA (SOL) 
   ELSE 
      FOR i=0 TO 1 DO 
         SOL[K+1]=i 
         SOTTOINSIEMI(SOL,K+1,N) 
      ENDFOR 
   END
ma magari ti avranno spiegato cosa sono i parametri SOL, K e N che passo alla "funzione" o mi sono perso già qualcosa?
si si pian piano metto a posto tutti i tasselli
dunque Sol si può pensare come un vettore caratteristico di 0,1 formato da N elementi, in cui Sol[k]==1 sse l'elemento k -esimo fa parte del sottoinsieme che stò costruendo in Sol.
K è solo un indice per manipolare il vettore, e N rappresenta il nr di elementi dell'insieme.

faccio un esempio di 2 sottoinsiemi di un insieme formato da
N=3 elementi= {a,b,c}
1) {a} rappresentato dall'algo come Sol={1,0,0}
2) {a,c} // // Sol={1,0,1}

Meglio no!?!