📘 Fiche de cours
L'essentiel du cours
La récursivité est une méthode de programmation où une fonction s'appelle elle-même. Pour qu'elle soit valide, elle doit comporter :
- Un cas de base : condition d'arrêt qui retourne une valeur sans appel récursif.
- Un cas récursif : appel de la fonction avec des paramètres qui se rapprochent du cas de base. La structure générale en Python est :
def f(n):
if condition_base:
return valeur
else:
return f(n-1) # ou autre modification
Méthodes à maîtriser
- Tracer l'exécution : Dessiner la pile d'appels (stack) pour comprendre l'ordre des retours.
- Vérifier la terminaison : S'assurer que chaque appel réduit la taille du problème vers le cas de base.
- Conversion : Savoir passer d'une boucle
whileouforà une structure récursive.
Exemples corrigés
Calcul de la factorielle :
def fact(n):
if n == 0: return 1
return n * fact(n-1)
Pour fact(3), on a : 3 * fact(2) -> 3 * (2 * fact(1)) -> 3 * (2 * (1 * fact(0))) = 6.
Erreurs fréquentes
- Oublier le cas de base : provoque une erreur
RecursionError(Stack Overflow). - Paramètre qui ne converge pas : si le paramètre ne se rapproche jamais du cas de base.
- Confusion entre
printetreturn: oublier de retourner la valeur dans l'appel récursif.