Crockfords Hanoi-Funktion (aus "The Good Parts") [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie funktioniert der rekursive Algorithmus für Towers of Hanoi? 3 answers

m Moment lese ich Douglas Crockfords Buch, und die Türme von Hanoi funktionieren ein bisschen über meinem Kopf. Selbst wenn ich Dinge auf der Konsole protokolliere, kann ich nicht wirklich verstehen, was los ist. Hier ist die Funktion mit meinen Ergänzungen:

var hanoi = function (disc, src, aux, dst) {
  console.log(disc);
  console.log(src, dst);    
  if (disc > 0) {
    hanoi(disc - 1, src, dst, aux);
    console.log('Move disc ' + disc + ' from ' + src + ' to ' + dst);
    hanoi(disc - 1, aux, src, dst);
  }
}

hanoi(3, 'Src', 'Aux', 'Dst');

Dies führt zu folgenden Ergebnissen:

3
Src Dst
2
Src Aux
1
Src Dst
0
Src Aux
Disc 1 von Src nach Dst @ verschieb
0
Aux Dst
Disc 2 von Src nach Aux @ verschieb
1
Dst Aux
0
Dst Src
Disc 1 von Dst nach Aux @ verschieb
0
Src Aux
Disc 3 von Src nach Dst @ verschieb
2
Aux Dst
1
Aux Src
0
Aux Dst
Disc 1 von Aux nach Src verschieben
0
Dst Src
Disc 2 von Aux nach Dst @ verschieb
1
Src Dst
0
Src Aux
Disc 1 von Src nach Dst @ verschieb
0
Aux Dst

Und ich bin zu einem frühen Zeitpunkt verloren. Wie kann es in Zeile 6 der Ergebnisse von Src Aux zu Src Dst zurückgehen?

Und wie kann die Anzahl der Disks nach Erreichen von 0 wieder erhöht werden, wenn die Funktion sich nur mit "disc - 1" aufruft?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage