PROGRAM ACKERMAN ! ! computes Ackermann function ! (second version for rosettacode.org) ! !$INTEGER DIM STACK[10000] !$INCLUDE="PC.LIB" PROCEDURE ACK(M,N->N) LOOP CURSOR_SAVE(->CURX%,CURY%) LOCATE(8,1) PRINT("Livello Stack:";S;" ") LOCATE(CURY%,CURX%) IF M<>0 THEN IF N<>0 THEN STACK[S]=M S+=1 N-=1 ELSE M-=1 N+=1 END IF CONTINUE LOOP ELSE N+=1 S-=1 END IF IF S<>0 THEN M=STACK[S] M-=1 CONTINUE LOOP ELSE EXIT PROCEDURE END IF END LOOP END PROCEDURE BEGIN PRINT(CHR$(12);) FOR X=0 TO 3 DO FOR Y=0 TO 9 DO S=1 ACK(X,Y->ANS) PRINT(ANS;) END FOR PRINT END FOR END PROGRAM