Numérique et Sciences Informatiques > Langages de Programmation > Introduction à un Langage Spécifique (Python par exemple) > Fonctions
Les Fonctions Récursives en Python : Un Concept Avancé
Explorez le concept de récursion en Python, où une fonction s'appelle elle-même pour résoudre un problème. Découvrez des exemples classiques comme le calcul de la factorielle et la suite de Fibonacci, expliqués de manière claire et concise pour les élèves de lycée.
Qu'est-ce que la récursion ?
La récursion est une technique de programmation où une fonction s'appelle elle-même pour résoudre un problème. C'est comme une poupée russe : chaque poupée contient une poupée plus petite, et ainsi de suite, jusqu'à la plus petite poupée. Pour qu'une fonction récursive fonctionne correctement, elle doit avoir une condition d'arrêt. C'est la condition qui indique quand la fonction doit arrêter de s'appeler elle-même et renvoyer une valeur. Sans condition d'arrêt, la fonction s'appellerait indéfiniment, ce qui entraînerait une erreur (dépassement de la pile d'exécution).
Exemple : Calcul de la factorielle
La factorielle d'un nombre entier positif n (notée n!) est le produit de tous les entiers positifs inférieurs ou égaux à n. Par exemple, 5! = 5 * 4 * 3 * 2 * 1 = 120.
Voici une fonction récursive pour calculer la factorielle :
def factorielle(n):
if n == 0: # Condition d'arrêt : la factorielle de 0 est 1
return 1
else:
return n * factorielle(n - 1) # Appel récursif
print(factorielle(5)) # Affiche : 120
Explication :
n
est égal à 0, la fonction renvoie 1 (condition d'arrêt).n
multiplié par la factorielle de n-1
. Cela signifie que la fonction s'appelle elle-même avec une valeur de n
plus petite.
Exemple : Suite de Fibonacci
La suite de Fibonacci est une suite de nombres où chaque nombre est la somme des deux nombres précédents. La suite commence généralement par 0 et 1.
La suite de Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
Voici une fonction récursive pour calculer le n-ième nombre de Fibonacci :
def fibonacci(n):
if n <= 1: # Condition d'arrêt : les nombres de Fibonacci pour 0 et 1 sont 0 et 1 respectivement
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2) # Appel récursif
print(fibonacci(7)) # Affiche : 13
Explication :
n
est inférieur ou égal à 1, la fonction renvoie n
(condition d'arrêt).n
plus petites.
Avantages et inconvénients de la récursion
Avantages :
Inconvénients :
Ce qu'il faut retenir
FAQ
-
Qu'est-ce qu'une condition d'arrêt dans une fonction récursive ?
La condition d'arrêt est la condition qui indique quand la fonction doit arrêter de s'appeler elle-même et renvoyer une valeur. Elle est essentielle pour éviter une boucle infinie. -
Quand est-il préférable d'utiliser la récursion plutôt que l'itération ?
La récursion est préférable pour les problèmes qui se définissent naturellement de manière récursive et où la concision et la clarté du code sont importantes. Cependant, il faut être conscient des inconvénients potentiels en termes d'efficacité et de débogage. -
Qu'est-ce qu'un dépassement de la pile d'exécution ?
Un dépassement de la pile d'exécution se produit lorsque la profondeur de la récursion est trop importante, c'est-à-dire, si la fonction s'appelle elle-même trop de fois sans atteindre la condition d'arrêt. Cela peut entraîner un arrêt brutal du programme.