home *** CD-ROM | disk | FTP | other *** search
- (*************************************************
- :
- : HANOI PROGRAM
- :
- : This one came in and got mixed up with a bunch
- : of other programs and since it did not have a comment
- : section I don't know who to give credit to. So if
- : anyone recognizes his own style, drop me a line and
- : I will update this spot to give you proper credit.
- : I included it because it is a excellent example
- : of recursive procedures. It nests deeply and demon-
- : strates how local versus global variable are keep
- : separate.
- ****************************************************)
-
- PROGRAM HANOI;
- VAR TOTAL : INTEGER;
-
- PROCEDURE MOVETOWER(HEIGHT,
- FROMNEEDLE,
- TONEEDLE,
- USINGNEEDLE : INTEGER);
-
- PROCEDURE MOVEDISK(TAKEOFF, PUTON : INTEGER);
- BEGIN
- WRITELN(TAKEOFF, '->', PUTON)
- END; (* MOVEDISK *)
-
- BEGIN (* MOVETOWER *)
- IF HEIGHT > 0
- THEN BEGIN
- MOVETOWER(HEIGHT-1, FROMNEEDLE, USINGNEEDLE, TONEEDLE);
- MOVEDISK(FROMNEEDLE, TONEEDLE);
- MOVETOWER(HEIGHT-1, USINGNEEDLE, TONEEDLE, FROMNEEDLE);
- END
- END; (* MOVETOWER *)
-
- BEGIN (* MAIN PROGRAM *)
- WRITE('ENTER NUMBER OF DISKS?');
- READ(TOTAL);
- WRITELN;
- MOVETOWER( TOTAL, 1, 3, 2)
- END. (* HANOI *)
-