IniziaInizia gratis

Torri di Hanoi

In questo esercizio implementerai il rompicapo delle Torri di Hanoi con un algoritmo ricorsivo. L'obiettivo del gioco è spostare tutti i dischi da una delle tre aste a un'altra, seguendo queste regole:

  • Puoi muovere un solo disco alla volta.
  • Puoi prendere solo il disco superiore da una delle pile e posizionarlo sopra un'altra pila.
  • Non puoi mettere un disco più grande sopra uno più piccolo.

Picture of the game Tower of Hanoi

L'algoritmo mostrato è un'implementazione di questo gioco con quattro dischi e tre aste chiamate 'A', 'B' e 'C'. Il codice contiene due errori. Infatti, se lo esegui, va in crash la console perché supera la profondità massima di ricorsione. Riesci a trovare i bug e a correggerli?

Questo esercizio fa parte del corso

Strutture dati e algoritmi in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Correggi il caso base.
  • Correggi le chiamate alla funzione hanoi().

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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)
Modifica ed esegui il codice