Chargement...

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.

3, puis 2, puis 1

python
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.

1, puis 2, puis 3

python
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.

down(0) n'écrit rien

python
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

  1. Qu'écrit le premier programme, d'abord, puis ensuite ?
  2. Qu'écrit le second programme, d'abord, puis ensuite ?
  3. Qu'écrit le troisième programme ?
  4. 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

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
5
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 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