⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 汉诺塔.pas

📁 汉诺塔程序 输出任意层数的解决方案
💻 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 + -