这个程序需要解决河内问题的问题,但由于某种原因,它不会起作用,这是我的代码。
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线上它起作用了,为什么?
答案 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.
我确定你知道问题所在。
如果要在块中包含多行,则必须使用begin
和end
对其进行分隔,这就是程序在您执行此操作时的工作原理。