Récursivité
Récursion est une technique de programmation où une fonction s'appelle elle-même pour résoudre un problème en le divisant en parties plus petites. Elle est particulièrement utile pour les problèmes à structure répétitive ou comportant des sous-problèmes naturels.
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 un moyen clair et élégant 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).
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Examinons étape par étape le fonctionnement de ce programme récursif :
Vérification de la condition : si
times > 0
, la fonction continue. Dans ce cas,times = 3
, donc la condition est vraie ;Affichage du message : la fonction affiche
"Hello, Recursion!"
;Appel récursif : la fonction s'appelle elle-même avec
times - 1
;Répétition : ce processus se poursuit jusqu'à ce que
times
soit égal à 0 ;Arrêt : lorsque la condition
times > 0
n'est plus vraie, la récursion s'arrête et le programme se termine.
Résultat : le message "Hello, Recursion!"
est affiché trois fois.
Comprendre le déroulement :
À chaque appel récursif, la fonction ajoute une nouvelle entrée à la pile d'appels (une structure mémoire qui garde la trace des appels de fonctions actifs). La fonction continue de s'appeler avec une valeur de times
décroissante. Une fois le cas de base atteint (times == 0
), elle s'arrête. Ensuite, chaque appel précédent se termine un par un dans l'ordre inverse. Ce comportement de retour en arrière est essentiel au fonctionnement de la récursion.
Swipe to start coding
Étant donné une chaîne représentant un numéro de téléphone, qui peut contenir des espaces, des tirets, des parenthèses ou d'autres caractères non numériques. L'objectif est d'extraire uniquement les chiffres en utilisant la récursivité.
- Si la chaîne d'entrée
number
est vide, retourner une chaîne vide. - Vérifier si le premier caractère de la chaîne
number
est un chiffre en utilisant la méthodeisdigit()
dans une conditionif
. - S'il s'agit d'un chiffre, le concaténer avec le résultat d'un appel récursif à
format_phone_number
, en passant la sous-chaîne à partir du deuxième caractère. - S'il ne s'agit pas d'un chiffre, effectuer un appel récursif à
format_phone_number
, en sautant le premier caractère.
Solution
Merci pour vos commentaires !