为什么这个 Pascal 程序不工作?
Why isn't this Pascal program working?
这个程序需要解决汉诺塔问题,但由于某些原因它无法运行,这是我的代码。
program haanoi ;
procedure Hanoi(n: integer; A, B, C: char);
begin
if n = 1 then
writeln(A, '-->', C)
else
<---- F
hanoi(n-1, A, C, B);
writeln(A, '-->',C);
hanoi(n-1, B, A, C);
<--- G
end ;
begin
Hanoi(4, 'A', 'B', 'C') ;
readln ;
end.
然而,当我在 F 行添加开始并结束时;在 G 行它有效,为什么?
你的缩进是骗人的 - 你的程序实际上是这样结构的:
program haanoi ;
procedure Hanoi(n: integer; A, B, C: char);
begin
if n = 1 then
writeln(A, '-->', C)
else
hanoi(n-1, A, C, B);
writeln(A, '-->',C);
hanoi(n-1, B, A, C);
end;
begin
Hanoi(4, 'A', 'B', 'C');
readln;
end.
我相信你知道问题出在哪里。
如果您想在一个块中包含多行,您必须用 begin
和 end
分隔它们,这就是程序在您这样做时工作的原因。
这个程序需要解决汉诺塔问题,但由于某些原因它无法运行,这是我的代码。
program haanoi ;
procedure Hanoi(n: integer; A, B, C: char);
begin
if n = 1 then
writeln(A, '-->', C)
else
<---- F
hanoi(n-1, A, C, B);
writeln(A, '-->',C);
hanoi(n-1, B, A, C);
<--- G
end ;
begin
Hanoi(4, 'A', 'B', 'C') ;
readln ;
end.
然而,当我在 F 行添加开始并结束时;在 G 行它有效,为什么?
你的缩进是骗人的 - 你的程序实际上是这样结构的:
program haanoi ;
procedure Hanoi(n: integer; A, B, C: char);
begin
if n = 1 then
writeln(A, '-->', C)
else
hanoi(n-1, A, C, B);
writeln(A, '-->',C);
hanoi(n-1, B, A, C);
end;
begin
Hanoi(4, 'A', 'B', 'C');
readln;
end.
我相信你知道问题出在哪里。
如果您想在一个块中包含多行,您必须用 begin
和 end
分隔它们,这就是程序在您这样做时工作的原因。