汉诺塔.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 + -
显示快捷键?