Хотя у меня нет проблем с пониманием рекурсии, я, похоже, не могу обернуть голову вокруг рекурсивного решения проблемы Башни Ханоя. Вот код из Wikipedia:
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;
Я понимаю базовый случай и концепцию разбивки проблемы на более мелкие части, пока вы не сможете переместить один диск. Однако я не могу понять, как работают два рекурсивных вызова в не-базовом случае. Может быть, кто-то может мне помочь? Спасибо.