home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xc212os2.zip / SAMPLES / SIMPLE / ackerman.ob2 next >
Text File  |  1995-01-31  |  938b  |  32 lines

  1. <*+ MAIN *> 
  2. MODULE ackermann;
  3.  
  4. IMPORT InOut;
  5.  
  6. VAR p1, p2, count: LONGINT;
  7.  
  8. PROCEDURE ack (m, n: LONGINT): LONGINT;
  9. BEGIN
  10.   INC (count);
  11.   IF m=0 THEN RETURN n+1 END;
  12.   IF n=0 THEN RETURN ack (m-1, 1) END;
  13.   RETURN ack (m-1, ack (m, n-1));
  14. END ack;
  15.  
  16. BEGIN
  17.   count := 0;
  18.   InOut.WriteString ("Ackermann Function Calculation"); InOut.WriteLn;
  19.   InOut.WriteString ("------------------------------"); InOut.WriteLn;
  20.   InOut.WriteLn;
  21.   InOut.WriteString ("Enter first  parameter (1..4): "); InOut.ReadInt (p1);
  22.   InOut.WriteString ("Enter second parameter (1..7): "); InOut.ReadInt (p2);
  23.   InOut.WriteLn;
  24.   InOut.WriteString ("Ackermann ("); InOut.WriteInt (p1, 0);
  25.   InOut.WriteString (", "); InOut.WriteInt(p2, 0);
  26.   InOut.WriteString ("): ");
  27.   InOut.WriteInt (ack (p1, p2), 0);
  28.   InOut.WriteString (" ("); InOut.WriteInt (count, 0);
  29.   InOut.WriteString (" recursive calls)");
  30.   InOut.WriteLn;
  31. END ackermann.
  32.