Die Türme von Hanoi in PASCAL
Ein Beipiel für rekursive Prozeduren.
PROGRAM TuermeVonHanoi;
(* Gibt eine Sequenz von Zuegen an, um n Turmscheiben *)
(* gemaess den Regeln der Tuerme von Hanoi *)
(* von Position 1 nach Position 3 zu bewegen. *)
VAR n: INTEGER;
PROCEDURE Hanoi(n,i,j: INTEGER);
(* Gibt aus, wie n Scheiben von i nach j bewegt *)
(* werden koennen, fuer i <> j in {1,2,3}. *)
VAR k: INTEGER;
BEGIN
IF n>0 THEN
BEGIN
k := 6-i-j; (* k in {1,2,3}-{i,j} *)
Hanoi(n-1,i,k);
WriteLn(i,' -> ',j);
Hanoi(n-1,k,j)
END; { IF }
END; { Hanoi }
BEGIN
Write('Gebe die Anzahl n der Scheiben ein, n = ');
ReadLn(n);
WriteLn;
Hanoi(n,1,3)
END.