📄 汉诺塔.pas
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -