CommencerCommencer gratuitement

Tours de Hanoi

Dans cet exercice, vous allez mettre en œuvre l'énigme des Tours de Hanoï avec un algorithme récursif. Le but de ce jeu est de transférer tous les disques d'une des trois tiges à l'autre, en suivant ces règles :

  • Vous ne pouvez déplacer qu'un seul disque à la fois.
  • Vous ne pouvez prendre que le disque supérieur d'une des piles et le placer au-dessus d'une autre pile.
  • Vous ne pouvez pas placer un disque plus grand sur un disque plus petit.

Image du jeu La Tour de Hanoi

L'algorithme présenté est une implémentation de ce jeu avec quatre disques et trois tiges appelées 'A', 'B' et 'C'. Le code contient deux erreurs. En fait, si vous l'exécutez, la console se bloque parce qu'elle dépasse la profondeur de récursion maximale. Pouvez-vous trouver les bogues et les corriger ?

Cet exercice fait partie du cours

Structures de données et algorithmes en Python

Afficher le cours

Instructions

  • Corrigez le cas de base.
  • Corrigez les appels à la fonction hanoi().

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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)
Modifier et exécuter le code