Démystifier la récursivité Python

La plupart des tâches complexes en Python peuvent être décomposées en sous-tâches plus simples. La récursivité contribue à atteindre cet objectif, rendant ainsi le code propre et soigné. Ce tutoriel présentera la récursivité, les avantages de la récursivité et son utilisation dans la programmation Python..

Qu'est-ce que la récursion?

La récursivité est une méthode permettant de résoudre un problème avec les solutions à des instances plus petites du même problème. Cette approche peut être appliquée à de nombreux types de défis en matière de programmation.

Les avantages de l'utilisation de la récursivité

Certains des avantages de l'utilisation de la récursivité sont les suivants:

  • La récursivité ajoute de la simplicité lors de l'écriture de code, facilitant ainsi le débogage..
  • La récursivité réduit le temps d’exécution d’un algorithme en fonction de la longueur de l’entrée..
  • La récursivité est également préférable lors de la résolution de problèmes très complexes, en particulier de problèmes liés aux structures arborescentes, car elle fonctionne mieux..

Introduction à la fonction récursive Python

Bien que la récursion semble être une procédure compliquée, ce n'est pas si compliqué que cela. En termes simples, supposons que vous avez deux rectangles A et B. Si vous les additionnez, ils forment un rectangle C. Ceci est en soi une procédure récursive. Nous avons utilisé de plus petites instances d'un rectangle pour se définir, et si nous devions écrire une fonction Python, ce serait comme suit:

def rectangle (a, b): retourne a + b 

Puisqu'une fonction récursive s'appelle elle-même, il doit exister une règle ou un point d'arrêt auquel le processus ou la boucle se terminerait. Une telle condition est appelée condition de base. Une condition de base est une exigence dans chaque programme récursif, sinon la procédure aboutirait à une boucle infinie.

La deuxième condition est le cas récursif lorsque la fonction s’appelle elle-même.

Regardons un exemple:

Dans cet exemple, vous allez écrire une fonction factorielle prenant un entier (positif) en entrée. La factorielle d'un nombre est obtenue en multipliant ce nombre par tous les entiers positifs situés en dessous. Par exemple, factorielle (3) = 3 x 2 x 1, factorielle (2) = 2 x 1, et factorielle (0) = 1.

La première chose à faire est de définir notre cas de base, qui sera factoriel (0) = 1.

Comme vous pouvez le voir ci-dessus, il existe une relation entre chaque scénario factoriel consécutif. Vous devriez remarquer que factorielle (4) = 4 x factorielle (3). De même, factorielle (5) = 5 x factorielle (4).

La deuxième partie va écrire une fonction qui s’appelle elle-même.

Maintenant que nous l'avons simplifié, la fonction résultante sera:

def factorial (n): if (n == 0): #Définir notre cas de base? retourne 1 sinon: retourne n * factorielle (n-1) empreinte (factorielle (5)) #resultat # 120

La solution si n == 0 est:

def factorial (n): if (n == 0): #Définir notre cas de base? retourne 1 sinon: retourne n * factorielle (n-1) print (factorielle (0)) #resultat 0

Maintenant que vous savez écrire des fonctions récursives, examinons plusieurs études de cas qui renforceront votre compréhension de la récursivité..

Étude de cas 1: Fibonacci

Dans une séquence de Fibonacci, chaque nombre est la somme des deux nombres précédents, tels que: 1 + 1 = 2; 1 + 2 = 3; 2 + 3 = 5; 3 + 5 = 8. La séquence de Fibonacci a été appliquée dans de nombreux domaines et la plus courante consiste à prévoir l'action des prix sur le marché boursier par les cambistes..

La séquence de Fibonacci commence par 0 et 1. Le premier nombre d'une séquence de Fibonacci est 0, le deuxième nombre est 1 et le troisième terme de la séquence est 0 + 1 = 1. Le quatrième est 1 + 1 = 2 et ainsi de suite..

Pour obtenir une fonction récursive, vous devez disposer de deux cas de base, à savoir 0 et 1. Vous pouvez ensuite traduire le modèle d’ajout dans le cas contraire..

La fonction résultante sera:

def fibonacci (n): if (n == 1): #define Cas de base 1 retour 0 + 1 elif (n == 2): #define Cas de base 1 retour 1 + 2 sinon: retour fibonacci (n) + fibonacci ( n-1) print (fibonacci (5)) #résultat # 

Étude de cas 2: Inverser une chaîne

Dans cet exemple, vous écrirez une fonction qui prend une chaîne en tant qu'entrée puis renvoie l'inverse de la chaîne..

La première chose à faire est de définir notre cas de base, qui vérifiera si la chaîne est égale à 0 et, le cas échéant, retournera la chaîne elle-même..

La deuxième étape consiste à appeler de manière récursive la fonction reverse pour découper la partie de la chaîne excluant le premier caractère, puis concaténer le premier caractère à la fin de la chaîne découpée..

La fonction résultante est la suivante:

def reverse (a): if len (a) == 0: retourne un autre: retourne reverse (a [1:]) + a [0] print (reverse ("Python est un langage très facile à apprendre")) # résultat #nrael ot egaugnal ysae y no a it nohtyP 

Etude de cas 3: Somme des éléments

Dans cet exemple, vous écrirez une fonction qui prend un tableau en entrée puis renvoie la somme des éléments de la liste..

La première chose à faire est de définir notre cas de base, qui vérifiera si la taille de la liste est égale à zéro et renverra 0 si vrai.

La deuxième étape renvoie l'élément et un appel à la fonction sum () moins un élément de la liste.

La solution est la suivante:

def sum_of_numbers (l): if len (l) == 1: renvoie 0 sinon: renvoie l [0] + somme (l [1:]) a = [5,7,3,8,10] print (somme ( a)) # résultat # 33

La solution pour une liste vide est la suivante:

def sum_of_numbers (l): if len (l) == 1: retourne 0 sinon: retourne l [0] + somme (l [1:]) b = [] print (somme (b)) # résultat # 0

Conclusion

Ce tutoriel a expliqué ce qu'il est nécessaire d'utiliser la récursivité pour résoudre des programmes complexes en Python. Il est également important de noter que la récursivité a ses propres limites:

  • La récursivité prend beaucoup de place dans la pile, ce qui ralentit un peu la maintenance du programme..
  • Les fonctions de récursivité nécessitent plus d'espace et de temps pour s'exécuter.

Rappelez-vous, n'hésitez pas à voir ce que nous avons disponible à la vente et à étudier dans le marché Envato, et s'il vous plaît posez vos questions et fournissez vos précieux commentaires en utilisant le flux ci-dessous.