Die Türme von Hanoi
In dieser Übung sollst du das Rätsel der Türme von Hanoi mit einem rekursiven Algorithmus umsetzen. Das Ziel dieses Spiels ist es, alle Scheiben von einer der drei Stangen zu einer anderen zu bringen, indem du diese Regeln befolgst:
- Du kannst immer nur eine Festplatte auf einmal verschieben.
- Du kannst nur die oberste Scheibe von einem der Stapel nehmen und sie auf einen anderen Stapel legen.
- Du kannst nicht eine größere Scheibe auf eine kleinere legen.
Der gezeigte Algorithmus ist eine Umsetzung dieses Spiels mit vier Scheiben und drei Stäben namens "A", "B" und "C". Der Code enthält zwei Fehler. Wenn du sie ausführst, stürzt die Konsole ab, weil sie die maximale Rekursionstiefe überschreitet. Kannst du die Fehler finden und sie beheben?
Diese Übung ist Teil des Kurses
Datenstrukturen und Algorithmen in Python
Anleitung zur Übung
- Korrigiere den Basisfall.
- Korrigiere die Aufrufe der Funktion
hanoi()
.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
def hanoi(num_disks, from_rod, to_rod, aux_rod):
# Correct the base case
if num_disks >= 0:
# Correct the calls to the hanoi function
hanoi(num_disks, from_rod, aux_rod, to_rod)
print("Moving disk", num_disks, "from rod", from_rod,"to rod",to_rod)
hanoi(num_disks, aux_rod, to_rod, from_rod)
num_disks = 4
source_rod = 'A'
auxiliar_rod = 'B'
target_rod = 'C'
hanoi(num_disks, source_rod, target_rod, auxiliar_rod)