diff --git a/Chapitre 2 - Récursivité/exercices.py b/Chapitre 2 - Récursivité/exercices.py index 338a1c1..47a6fb6 100644 --- a/Chapitre 2 - Récursivité/exercices.py +++ b/Chapitre 2 - Récursivité/exercices.py @@ -143,23 +143,23 @@ def expo_rapide(x, n): print(expo_rapide(2, 10000)) def hanoi(k, source, aide, but): - if k == 0: return - hanoi(k-1, source, but, aide) - print(k, ":", source, "->", but) - but.append(source.pop()) - hanoi(k-1, aide, source, but) + if k == 0: return # Si il n'y a plus rien a déplacer on retourne + hanoi(k-1, source, but, aide) # On déplace la pile source vers l'aide sauf le plus grand + print(k, ":", source, "->", but) # On affiche l'action réalisé + but.append(source.pop()) # On déplace le plus grand vers la pile but + hanoi(k-1, aide, source, but) # On répète l'opération avec aide qui devient la nouvelle source hanoi(4, [4, 3, 2, 1], [], []) def better_hanoi(k, source, aide, but, aff=None): - if aff is None: - aff = (source, aide, but) - print(aff[0], aff[1], aff[2]) - if k == 0: return - better_hanoi(k-1, source, but, aide, aff) - print(aff[0], aff[1], aff[2]) - but.append(source.pop()) - better_hanoi(k-1, aide, source, but, aff) + if aff is None: # Si il n'y a pas encore d'affichage pour l'état des piles + aff = (source, aide, but) # On l'initialise + print(aff[0], aff[1], aff[2]) # On l'affiche + if k == 0: return # Si il n'y a plus rien a déplacer on retourne + better_hanoi(k-1, source, but, aide, aff) # On déplace la pile source vers l'aide sauf le plus grand + print(aff[0], aff[1], aff[2]) # On affiche l'état de nos piles + but.append(source.pop()) # On déplace le plus grand vers la pile but + better_hanoi(k-1, aide, source, but, aff) # On répète l'opération avec aide qui devient la nouvelle source better_hanoi(4, [4, 3, 2, 1], [], [])