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