ÎncepețiÎncepe gratuit

Turnurile din Hanoi

În acest exercițiu vei implementa puzzle-ul Turnurile din Hanoi folosind un algoritm recursiv. Scopul jocului este să muți toate discurile de pe unul dintre cele trei stâlpi pe altul, respectând următoarele reguli:

  • Poți muta câte un singur disc la un moment dat.
  • Poți lua doar discul de deasupra unui stâlp și îl poți plasa în vârful altui stâlp.
  • Nu poți pune un disc mai mare peste unul mai mic.

Picture of the game Tower of Hanoi

Algoritmul prezentat implementează acest joc cu patru discuri și trei stâlpi numiți 'A', 'B' și 'C'. Codul conține două greșeli. Dacă îl execuți, consola va genera o eroare deoarece se depășește adâncimea maximă de recursivitate. Poți identifica problemele și le poți corecta?

Acest exercițiu face parte din cursul

Structuri de date și algoritmi în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Corectează cazul de bază.
  • Corectează apelurile funcției hanoi().

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
Editează și rulează codul