PROGRAM COMBINATIONS CONST M_MAX=3,N_MAX=5 DIM COMBINATION[M_MAX],STACK[100,1] PROCEDURE GENERATE(M) LOCAL I IF (M>M_MAX) THEN FOR I=1 TO M_MAX DO PRINT(COMBINATION[I];" ";) END FOR PRINT ELSE FOR N=1 TO N_MAX DO IF ((M=1) OR (N>COMBINATION[M-1])) THEN COMBINATION[M]=N ! --- PUSH STACK ----------- STACK[SP,0]=M STACK[SP,1]=N SP=SP+1 ! -------------------------- GENERATE(M+1) ! --- POP STACK ------------ SP=SP-1 M=STACK[SP,0] N=STACK[SP,1] ! -------------------------- END IF END FOR END IF END PROCEDURE BEGIN GENERATE(1) END PROGRAM