date: 2023-10-16
Type: Cours
Projet: Blindcode
Cours: AlgorithmiePrincipe de la Récursivité
La récursivité est un concept fondamental en programmation où une fonction s'appelle elle-même pour résoudre un problème. Cela permet de résoudre des problèmes complexes en les décomposant en des sous-problèmes plus simples. Dans ce chapitre, nous explorerons les principes de la récursivité en pseudo-code.
Une fonction récursive commence par définir un cas de base où la fonction s'arrête. Ensuite, elle s'appelle elle-même avec un problème plus simple à résoudre. Le cas de base est essentiel pour éviter une récursion infinie.
Exemple de fonction récursive de base pour le calcul d'un factoriel :
FONCTION factoriel(n : ENTIER) : ENTIER
SI n = 0 ALORS
RETOURNER 1 // Cas de base : 0! = 1
SINON
RETOURNER n * factoriel(n - 1) // Appel récursif
FIN SI
FIN FONCTION
Dans cet exemple, le cas de base est défini lorsque n est égal à zéro, et la fonction retourne 1. Sinon, la fonction s'appelle elle-même avec n - 1 pour résoudre un problème plus simple.
A toi de jouer
La récursivité peut également être utilisée pour traiter des structures de données récursives, telles que les listes chaînées ou les arbres. Dans ce cas, la fonction récursive parcourt la structure de données en appelant récursivement la fonction sur les sous-structures.
Exemple de récursivité sur une liste chaînée :
FONCTION sommeListe(liste : LISTE) : ENTIER
SI LISTE_EST_VIDE(liste) ALORS
RETOURNER 0 // Cas de base : liste vide
SINON
RETOURNER PREMIER_ELEMENT(liste) + sommeListe(SUPPRIMER_PREMIER_ELEMENT(liste)) // Appel récursif
FIN SI
FIN FONCTION
Dans cet exemple, la fonction sommeListe calcule la somme des valeurs dans une liste chaînée en utilisant la récursivité. Le cas de base est défini lorsque la liste est vide, et la fonction retourne 0. Sinon, elle additionne la valeur du nœud actuel avec la somme des valeurs dans le reste de la liste.
La récursivité peut être coûteuse en termes de ressources, car chaque appel récursif ajoute une nouvelle pile d'appels. Pour éviter les problèmes de débordement de pile, il est parfois nécessaire d'optimiser les fonctions récursives. Une technique courante est la "récursion de queue," où l'appel récursif est la dernière instruction de la fonction, ce qui permet à certains compilateurs d'optimiser le code.
La récursivité est un concept puissant qui permet de résoudre des problèmes complexes en les décomposant en des sous-problèmes plus simples. Elle est particulièrement utile pour traiter des structures de données récursives. Cependant, il est important de définir un cas de base pour éviter une récursion infinie et d'optimiser les fonctions récursives si nécessaire pour éviter les débordements de pile.
créé le 2023-10-16 à 13:40