尽管我对递归的理解没有任何问题,但我似乎无法理解河内塔问题的递归解决方案。这是来自维基百科的代码:
procedure Hanoi(n: integer; source, dest, by: char);
Begin
if (n=1) then
writeln('Move the plate from ', source, ' to ', dest)
else begin
Hanoi(n-1, source, by, dest);
writeln('Move the plate from ', source, ' to ', dest);
Hanoi(n-1, by, dest, source);
end;
End;
我了解基本情况以及将问题分解成更小部分的概念,直到您能够移动单个磁盘。但是,我无法弄清楚非基本案例中的两个递归调用如何协同工作。也许有人可以帮助我?谢谢。