为什么这个 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.

我相信你知道问题出在哪里。

如果您想在一个块中包含多行,您必须用 beginend 分隔它们,这就是程序在您这样做时工作的原因。