Vous êtes sur la page 1sur 130

Récursivité

Récursion

Problème
A
Récursion

Sous-problème

Problème
A
Récursion

Sous-problème
B

Problème
A
Récursion

Sous-(sous-) problème

Sous-problème
B

Problème
A
Récursion

Sous-(sous-) problème
C

Sous-problème
B

Problème
A
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A

Un problème peut se diviser en sous problèmes moins complexes mais ne même natures.
Récursion

Sous-(sous-(sous-)) problème avec une solution simple

Sous-(sous-) problème
C

Sous-problème
B

Problème
A

Un problème peut se diviser en sous problèmes moins complexes mais ne même natures.

Les sous-problèmes peuvent également se diviser en autres sous problèmes jusqu’à ce qu’un
sous problème ai une solution évidente.
Compte à rebours récursif

Écrire une fonction pour compter à rebours :



Entrée : un entier naturel n.

Sortie : l'affichage des entiers n, n-1, n-2, ..., 1.
Compte à rebours récursif

Écrire une fonction pour compter à rebours :



Entrée : un entier naturel n.

Sortie : l'affichage des entiers n, n-1, n-2, ..., 1.

1ère solution en utilisant une boucle :


Compte à rebours récursif

Écrire une fonction pour compter à rebours :



Entrée : un entier naturel n.

Sortie : l'affichage des entiers n, n-1, n-2, ..., 1.

1ère solution en utilisant une boucle :


def compte_a_rebours (n):
for i in range (n,0,-1) : #range(start, stop, step)
print(i,end=" ")

compte_a_rebours(5)

Python Tutor
Compte à rebours récursif

Écrire une fonction pour compter à rebours :



Entrée : un entier naturel n.

Sortie : l'affichage des entiers n, n-1, n-2, ..., 1.

Autre solution en utilisant la récursivité :


Compte à rebours récursif

Écrire une fonction pour compter à rebours :



Entrée : un entier naturel n.

Sortie : l'affichage des entiers n, n-1, n-2, ..., 1.

Autre solution en utilisant la récursivité :


def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Python Tutor
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)
print(4,end=" ")
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ") print(3,end=" ")
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else : print(2,end=" ")
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 : print(1,end=" ")
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 : compte_a_rebours(0)
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n): pass


if n <=0 : compte_a_rebours(0)
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 : compte_a_rebours(0)
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else : compte_a_rebours(1)
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ") compte_a_rebours(2)
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)
compte_a_rebours(3)
compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4) compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

La fonction située au sommet de la pile d'exécution est en cours d'exécution.


Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

La fonction située au sommet de la pile d'exécution est en cours d'exécution.


Toutes les fonctions situées "en dessous" sont mises en pause jusqu'au moment où elles se retrouveront
au sommet de la pile.
Compte à rebours récursif

def compte_a_rebours (n):


if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

La fonction située au sommet de la pile d'exécution est en cours d'exécution.


Toutes les fonctions situées "en dessous" sont mises en pause jusqu'au moment où elles se retrouveront
au sommet de la pile.

Quand une fonction termine son exécution, elle est automatiquement retirée du sommet de la pile (on
dit que la fonction est dépilée).
Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

compte_a_rebours(4)
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Écrire 4
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

compte_a_rebours(3)
Écrire 3 Écrire 3
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Écrire 3
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Appel de compte_a_rebours(2)
Écrire 3
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

compte_a_rebours(2)

Appel de compte_a_rebours(2)

compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2) Écrire 2


compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)

compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(4)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)

compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)

compte_a_rebours(1) compte_a_rebours(4)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2) compte_a_rebours(1)


compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)
Écrire 1
Appel de compte_a_rebours(2) compte_a_rebours(1)
compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2) compte_a_rebours(1)


compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2) compte_a_rebours(1)


compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
compte_a_rebours(0) pass
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)
compte_a_rebours(0)
Appel de compte_a_rebours(2) compte_a_rebours(1)
compte_a_rebours(3)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2 pass
compte_a_rebours(2)
compte_a_rebours(0)
Appel de compte_a_rebours(2) compte_a_rebours(1)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)
compte_a_rebours(0)
Appel de compte_a_rebours(2) compte_a_rebours(1)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)
compte_a_rebours(0)
Appel de compte_a_rebours(2) compte_a_rebours(1)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2) compte_a_rebours(1)


Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2) compte_a_rebours(1)


Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3 compte_a_rebours(2)
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3
compte_a_rebours(3)
compte_a_rebours(3)
Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3
compte_a_rebours(3)

Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3
compte_a_rebours(3)

Appel de compte_a_rebours(3)
compte_a_rebours(4)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Compte à rebours récursif
Autre solution en utilisant la récursivité : def compte_a_rebours (n):
if n <=0 :
pass pass
compte_a_rebours(0)
else :
print(n,end=" ")
Appel de compte_a_rebours(0) compte_a_rebours (n-1)
Écrire 1 compte_a_rebours(4)
compte_a_rebours(1)

Appel de compte_a_rebours(1)
Écrire 2
compte_a_rebours(2)

Appel de compte_a_rebours(2)
Écrire 3
compte_a_rebours(3)

Appel de compte_a_rebours(3)
Écrire 4
compte_a_rebours(4)

Appel de compte_a_rebours(4)

Programme principal Fin


Fonction récursive
Une fonction récursive est une fonction qui s'appelle elle-même.
Fonction récursive
Une fonction récursive est une fonction qui s'appelle elle-même.
Chaque appel à la fonction est indépendant des autres, avec ses propres variables.
Fonction récursive
Une fonction récursive est une fonction qui s'appelle elle-même.
Chaque appel à la fonction est indépendant des autres, avec ses propres variables.
Une récursion a toujours la forme suivante :
Fonction récursive
Une fonction récursive est une fonction qui s'appelle elle-même.
Chaque appel à la fonction est indépendant des autres, avec ses propres variables.
Une récursion a toujours la forme suivante :
fonction récursive(paramètres) :
si cas simple: #condition terminale
solution immédiate
sinon:
solution récursive impliquant un cas
plus simple que le problème original
Compteur récursif
Compter de façon récursive :

Entrée : un entier naturel n.

Sortie : l'affichage des entiers 1, 2, 3, ..., n.
Compteur récursif
Compter de façon récursive :

Entrée : un entier naturel n.

Sortie : l'affichage des entiers 1, 2, 3, ..., n.

def compter(n) :
if n <= 0: #cas simple
pass #solution immédiate
else :
compter(n-1) #solution récursive
print(n,end=" ")

Python Tutor
Somme récursive
Sommer les premiers entiers naturels

Entrée: un entier naturel n (non nul).

Sortie : la somme 1+2+3+...+n.
Somme récursive
Sommer les premiers entiers naturels

Entrée: un entier naturel n (non nul).

Sortie : la somme 1+2+3+...+n.

def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

Python Tutor
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(5)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(4)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(3)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(2)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(1)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(1) 1+somme_entiers(0)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(0)

somme_entiers(1) 1+somme_entiers(0)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(0) somme_entiers(0)

somme_entiers(1) 1+somme_entiers(0)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(0) somme_entiers(0)=0

somme_entiers(1) 1+somme_entiers(0)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(0)=0

somme_entiers(1) 1+somme_entiers(0)

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(0)=0

somme_entiers(1) 1+somme_entiers(0)=1

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

1+somme_entiers(0)=1

somme_entiers(2) 2+somme_entiers(1)

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

1+somme_entiers(0)=1

somme_entiers(2) 2+somme_entiers(1)=3

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

2+somme_entiers(1)=3

somme_entiers(3) 3+somme_entiers(2)

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

2+somme_entiers(1)=3

somme_entiers(3) 3+somme_entiers(2)=6

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

3+somme_entiers(2)=6

somme_entiers(4) 4+somme_entiers(3)

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

3+somme_entiers(2)=6

somme_entiers(4) 4+somme_entiers(3)=10

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

4+somme_entiers(3)=10

somme_entiers(5) 5+somme_entiers(4)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

4+somme_entiers(3)=10

somme_entiers(5) 5+somme_entiers(4)=15
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

5+somme_entiers(4)=15

resultat = 15
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme_entiers(0) somme_entiers(0)=0

somme_entiers(1) 1+somme_entiers(0)=1

somme_entiers(2) 2+somme_entiers(1)=3

somme_entiers(3) 3+somme_entiers(2)=6

somme_entiers(4) 4+somme_entiers(3)=10

somme_entiers(5) 5+somme_entiers(4)=15

resultat = 15
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)
Somme récursive
def somme_entiers(n) :
if n == 0 :
return 0
else :
return (n+somme_entiers(n-1))

resultat = somme_entiers(5)
print(resultat)

somme(5)
= 5 + somme(4)
= 5 + 4 + somme(3))
= 5 + (4 + (3 + somme(2)))
= 5 + (4 + (3 + (2 + somme(1))))
= 5 + (4 + (3 + (2 + (1 + somme(0))))) or somme(0) = 0
= 5 + (4 + (3 + (2 + (1 + 0))))
donc somme(5) = 5 + (4 + (3 + (2 + (1 + 0))))
Tours de Hanoï
Les tours de Hanoï sont un jeu inventé par Édouard Lucas en 1883. Ce jeu dérive d’une légende
hindou.
Le principe est le suivant: on considère 3 piquets et n anneaux de diamètres différents empilés sur un
même piquet du plus grand au plus petit.
Il faut déplacer l’ensemble de la pile d’un piquet à un autre en respectant les principes suivants :

On ne déplace qu’un seul disque à la fois.

On ne peut poser un disque que sur un emplacement vide ou un disque de diamètre plus grand.
Avec 3 anneaux :

A B C A B C
Tours de Hanoï
A B C A B C

A B C A B C

S’il y a n=1 disque écrire le déplacement de ce disque.


Sinon :
Étape a : déplacer la pyramide de n-1 disques du piquet A (Départ) vers le piquet B (Arrivée) ;
Étape b : déplacer le disque n du piquet A (Départ) vers le piquet C (Arrivée) ;
Étape c : déplacer la pyramide de n-1 disques du piquet B (Départ) vers le piquet C (Arrivée).
Tours de Hanoï
S’il y a n=1 disque écrire le déplacement de ce disque.
Sinon :
Étape a : déplacer la pyramide de n-1 disques du piquet A (Départ) vers le piquet B (Arrivée) ;
Étape b : déplacer le disque n du piquet A (Départ) vers le piquet C (Arrivée) ;
Étape c : déplacer la pyramide de n-1 disques du piquet B (Départ) vers le piquet C (Arrivée).
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C
Tours de Hanoï
A B C A B C

A B C A B C

Hanoï (3 disques de A → C, anneau 1)

Hanoï (2 disques de A → B, anneau 1) Hanoï (2 disques de B → C, anneau 1)


Hanoï (1 disque de A
→ C, anneau 3)
Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de Hanoï (1 disque de
A → C, anneau 1) A → B , anneau 2) C → B, anneau 1) B → A, anneau 1) B → C, anneau 2) A → C, anneau 1)

1 disque : 1 disque : 1 disque : 1 disque : 1 disque : 1 disque :


1 disque :
Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de Déplacement de
Déplacement de
l’anneau 1 de A l’anneau 2 de A l’anneau 1 de C l’anneau 1 de B l’anneau 2 de B l’anneau 1 de A
l’anneau 3 de A vers C
vers C vers B vers B vers A vers C vers C

Vous aimerez peut-être aussi