Aan de slagGa gratis aan de slag

Toren van Hanoi

In deze oefening implementeer je de puzzel Toren van Hanoi met een recursief algoritme. Het doel van dit spel is om alle schijven van één van de drie staven naar een andere te verplaatsen, volgens deze regels:

  • Je mag maar één schijf tegelijk verplaatsen.
  • Je mag alleen de bovenste schijf van een stapel nemen en boven op een andere stapel leggen.
  • Je mag geen grotere schijf op een kleinere leggen.

Picture of the game Tower of Hanoi

Het getoonde algoritme is een implementatie van dit spel met vier schijven en drie staven met de namen ‘A’, ‘B’ en ‘C’. De code bevat twee fouten. Als je het uitvoert, crasht de console zelfs omdat de maximale recursiediepte wordt overschreden. Kun je de bugs vinden en oplossen?

Deze oefening maakt deel uit van de cursus

Datastructuren en algoritmen in Python

Cursus bekijken

Oefeninstructies

  • Corrigeer het basisgeval.
  • Corrigeer de aanroepen van de functie hanoi().

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren