Hanoi Funktion JavaScript?
Ich habe die Funktion <script type="text/javascript">
function hanoi(n, start, zwischen, ziel) {
if (n == 1) {
zieheScheibe(start, ziel);
}
else {
hanoi(n-1, start, ziel, zwischen);
zieheScheibe(start, ziel);
hanoi(n-1, zwischen, start, ziel);
}
}
function zieheScheibe(von, nach) {
document.write("Scheibe von " + von + " nach " + nach + "<br />");
}
hanoi(5, "A", "B", "C");
</script>
kann mir vielleicht jemand erklären wie die Funktion arbeitet und mir erklären wann man zu der Ausgabe kommt. Am wenigsten verstehe ich den inneren Teil bei der else Bedingung. Wieso wird dort zweimal n-1 gemacht und wieso wird da schon die Funktion zieheScheiben aufgerufen???
1 Antwort
also: n ist offenbar die Anzahl der Scheiben auf dem Stapel „Start“...
wenn du also auf dem Start-Stapel nur noch eine Scheibe hast (n==1), dann soll die auf den Stapel „Ziel“ gelegt werden und du bist fertig...
wenn n>1 ist, dann wollen wir die obersten (n-1) Scheiben vom Start-Stapel auf den Zwischen-Stapel legen und dabei den Ziel-Stapel als neuen Zwischen-Stapel benutzen.....
dann legen wir die letzte verbliebene Scheibe auf den wieder aufgeräumten Ziel-Stapel (der Zwischen-Stapel ist am Funktions-Ende so hoch wie vorher...)...
dann legen wir die (n-1) Scheiben, die wir eben auf den Original-Zwischen-Stapel gelegt haben, auf den Original-Ziel-Stapel....