Tour de Hanoi: Algorithme Récursif

Bien que je n'ai aucun problème que ce soit la compréhension de la récursivité, je n'arrive pas à envelopper ma tête autour de la solution récursive de la Tour de Hanoi problème. Voici le code de Wikipédia:

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;

Je comprends le cas de base et le concept de rompre le problème en petits morceaux jusqu'à ce que vous êtes capable de déplacer un seul disque. Cependant, je ne peux pas comprendre comment les deux appels récursifs dans le non-cas de base de travail ensemble. Peut-être que quelqu'un peut m'aider? Merci.

  • Ce code pourrait être améliorée par la vérification pour n=0 et ne rien faire dans ce cas, pour éviter la duplication de la déplacer.
  • Cela peut vous aider: learneroo.com/modules/71/nodes/402
  • J'ai écrit un billet de blog sur la récursivité lui-même. Il va dans une extrême profondeur et, très honnêtement, il prend un certain temps à comprendre mais une fois que vous le visualisez, il fait tellement plus de sens. Sérieusement, vous épargner du temps et de vérifier cela: dima.de/blog/?p=29
  • En fait l'idée de base est que si nous voulons résoudre le problème pour N disques alors nous pouvons utiliser de nouveau le problème avec les N-1 disques. Le cas de Base est lorsque N = 1. J'ai essayé de l'expliquer dans mon blog à l'aide du code Java. krishnalearnings.blogspot.dans/2015/06/...
  • Vous pouvez essayer de créer une visualisation comme ceci: thewalnut.io/visualiseur/visualiser/1322/342 pour voir si elle aide à comprendre...