为什么这个Pascal程序没有工作?

时间:2015-10-14 07:35:33

标签: syntax pascal towers-of-hanoi

这个程序需要解决河内问题的问题,但由于某种原因,它不会起作用,这是我的代码。

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线上它起作用了,为什么?

1 个答案:

答案 0 :(得分:0)

你的缩进是欺骗 - 你的程序实际上是这样的结构:

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对其进行分隔,这就是程序在您执行此操作时的工作原理。