Aller au contenu

Fonctions récursives⚓︎

Définition

Une fonction est dite récursive si elle contient un appel à elle-même dans sa propre définition.

Quelles conséquences ?

Devinez ce que font les scripts suivants, ils contiennent des fonctions récursives :

🐍 Script Python
def f_1():
    print("Bonjour")
    f_1()

f_1()
Réponse

Ce script affiche Bonjour de nombreuses fois.

⚠ En théorie jusqu'à l'infini, mais Python arrête l'exécution au bout d'un moment et affiche un message d'erreur.

🐍 Script Python
def f_2():
    f_2()
    print("Bonjour")

f_2()
Réponse

Ce script n'affiche jamais Bonjour, mais...

⚠ Il y a de nombreux appels récursifs, jusqu'au message d'erreur de Python.

🐍 Script Python
def f_3():
    if False:
        f_3()
    print("Bonjour")

f_3()
Réponse

Ce script affiche Bonjour une seule fois. Cette fonction est récursive (par définition), mais il n'y a jamais d'appels récursifs (par construction).

🐍 Script Python
def f_4(n):
    print(n)
    if n > 0:
        f_4(n - 1)

f_4(4)
Réponse

Ce script affiche

📤 Sortie
4
3
2
1
0

XKCD 15571