Ханойская башня: рекурсивный алгоритм

Хотя у меня нет проблем с пониманием рекурсии, я могуКажется, я оборачиваюсь рекурсивным решением проблемы Ханойской башни. Вот код изВикипедия:

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;

Я понимаю базовый случай и концепцию разбиения проблемы на более мелкие части, пока вы не сможете переместить один диск. Тем не менее, я могуt выяснить, как два рекурсивных вызова в неосновном случае работают вместе. Возможно, кто-то может мне помочь? Благодарю.