汉诺塔.pas

来自「汉诺塔程序 输出任意层数的解决方案」· PAS 代码 · 共 46 行

PAS
46
字号
PROGRAM hanluota;
VAR
n:integer;
{任确定3个数中两个,则自动把第三个做为中间值}
FUNCTION Q(VAR x,y:integer):integer;
VAR
i:integer;
a:ARRAY [1..3] OF integer;
BEGIN
a[1]:=1;
a[2]:=2;
a[3]:=3;
FOR i:=1 TO 3 DO IF (a[i]<>x) AND (a[i]<>y) THEN q:=a[i];
END;
{交换任意两个数}
PROCEDURE P1(VAR x,y:integer);
VAR
temp:integer;
BEGIN
temp:=x;
x:=y;
y:=temp;
END;
{汉诺塔递归式}
PROCEDURE P2(x,m,n:integer);
VAR
k:integer;
BEGIN
IF x<>1 THEN
          BEGIN
          k:=Q(m,n);
          P1(n,k);
          P2(x-1,m,n);
          P1(n,k);
          P2(1,m,n);
          P1(m,k);
          P2(x-1,m,n);
          END
        ELSE writeln(m,'-->',n);
END;
BEGIN
write('input the number of what you want to yi dong:');
readln(n);
P2(n,1,3);
readln;
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?