Kom igångKom igång gratis

Tornen i Hanoi

I den här övningen ska du implementera pusslet Tornen i Hanoi med en rekursiv algoritm. Målet med spelet är att flytta alla skivor från en av de tre stängerna till en annan, enligt följande regler:

  • Du kan bara flytta en skiva i taget.
  • Du kan bara ta den översta skivan från en av staplarna och lägga den överst på en annan stapel.
  • Du får inte lägga en större skiva ovanpå en mindre.

Picture of the game Tower of Hanoi

Algoritmen som visas är en implementation av spelet med fyra skivor och tre stänger kallade 'A', 'B' och 'C'. Koden innehåller två fel. Om du kör den kraschar konsolen eftersom den överskrider det maximala rekursionsdjupet. Kan du hitta felen och rätta till dem?

Den här övningen är en del av kursen

Datastrukturer och algoritmer i Python

Visa kurs

Övningsinstruktioner

  • Rätta till basfallet.
  • Rätta till anropen till hanoi()-funktionen.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod