single
Récursivité
Glissez pour afficher le menu
Une fonction récursive est une fonction qui s'appelle elle-même pour résoudre un problème en le divisant en parties plus petites et plus simples.
Les éléments clés de la récursion sont :
- Cas de base : la condition qui arrête la récursion ;
- Cas récursif : la partie où la fonction s'appelle elle-même avec une entrée plus simple.
Pourquoi utiliser la récursion ?
Certains problèmes peuvent être naturellement exprimés en termes de sous-problèmes plus petits. La récursion offre une manière claire et élégante de les résoudre en permettant à une fonction de s'appeler elle-même pour traiter les cas plus simples. Elle est couramment utilisée pour des tâches telles que le traitement d'arbres, l'exploration de chemins ou la décomposition de structures (par exemple, listes, chaînes de caractères).
Un exemple simple
123456def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message("Hello, Recursion!", 3)
Procéder étape par étape pour comprendre le fonctionnement :
times = 3→ condition vraie, affichage du message, appel deprint_message(message, 2);times = 2→ condition vraie, affichage du message, appel deprint_message(message, 1);times = 1→ condition vraie, affichage du message, appel deprint_message(message, 0);times = 0→ condition fausse, la récursivité s'arrête.
Résultat : le message est affiché trois fois.
La pile d'appels
Chaque fois que la fonction s'appelle elle-même, elle ajoute une nouvelle trame à la pile d'appels — une structure mémoire qui garde la trace des appels de fonctions actifs. Une fois le cas de base atteint, chaque appel précédent se termine un par un dans l'ordre inverse.
Toute fonction récursive doit comporter un cas de base. Sans cela, la fonction s'appellera indéfiniment et provoquera une RecursionError.
Glissez pour commencer à coder
Implémenter une fonction récursive list_sum qui calcule la somme de tous les éléments d'une liste.
- Si la liste
numbersest vide, retourner0— il s'agit du cas de base ; - Sinon, retourner le premier élément ajouté au résultat d'un appel récursif avec le reste de la liste.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion