Une fonction qui s'appelle elle-même
Le nom down figure dans down, et chaque étape transmet un nombre plus petit d'une unité. down(3) écrit donc 3, puis 2, puis 1.
La ligne if n == 0: return est l'arrêt. Quand n vaut 0, cette ligne s'exécute et down ne repart pas. Sans elle, les étapes ne s'arrêtent pas, et le programme ne va pas au bout. Cette forme cassée n'est pas montrée plus bas.
def down(n):
if n == 0:
return
print(n)
down(n - 1)
down(3)
L'écran affiche 3, puis 2, puis 1. print s'exécute avant le down suivant. down(1) écrit 1, puis arrive à down(0). down(0) tombe sur l'arrêt, n'écrit rien, et le programme se termine.
Placez print sur la ligne qui suit down(n - 1). Les plus petits nombres sortent d'abord, parce que chaque étape attend que l'étape intérieure ait fini.
def down(n):
if n == 0:
return
down(n - 1)
print(n)
down(3)
L'écran affiche 1, puis 2, puis 3. down(0) n'écrit toujours rien. Les print s'exécutent au retour, donc 1 est écrit avant 2, et 2 avant 3.
down(0) tout seul n'atteint jamais print. L'arrêt s'exécute tout de suite.
def down(n):
if n == 0:
return
print(n)
down(n - 1)
down(0)
L'écran reste vide, et le programme se termine. n vaut déjà 0, donc print et le down suivant sont passés.
Mal lire les écrans
Le second programme n'est pas 3, puis 2, puis 1. Cet ordre appartient au premier, où print est devant. Retirez if n == 0: return de l'un ou de l'autre, et les étapes ne finissent pas. Ne lancez pas cette version.
La page suivante est une liste de valeurs. Ici, on voit seulement une fonction qui se sert de son propre nom, et la ligne qui l'arrête à 0.
Suivre les nombres
- Qu'écrit le premier programme, d'abord, puis ensuite ?
- Qu'écrit le second programme, d'abord, puis ensuite ?
- Qu'écrit le troisième programme ?
- Vous retirez l'arrêt à 0. Le programme va-t-il au bout ?
Ce que fait down
Le nom down dans down, avec n - 1, descend de 3 jusqu'à 1. print avant cette étape écrit 3, puis 2, puis 1. print après écrit 1, puis 2, puis 3. if n == 0: return est la raison pour laquelle le programme se termine. down(0) n'écrit rien.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut