Récursivité dans la structure de données : comment ça marche, types et quand utilisé

Publié: 2020-05-22

Commençons par la définition de la récursivité dans la structure de données. Nous discuterons plus tard des différents types de récursivité et de la façon dont la récursivité est utilisée pour résoudre différents problèmes.

Table des matières

Qu'est-ce que la récursivité ?

En termes simples, la récursivité est une solution de problèmes et, dans certains cas, une technique de programmation qui a une propriété très spéciale et exclusive. En récursivité, une fonction ou une méthode a la capacité de s'appeler pour résoudre le problème. Le processus de récursivité consiste à résoudre un problème en le transformant en plus petites variétés de lui-même.

Le processus dans lequel une fonction s'appelle elle-même peut se produire directement ou indirectement. Cette différence d'appel donne lieu à différents types de récursivité, dont nous parlerons un peu plus tard. Certains des problèmes qui peuvent être résolus à l'aide de la récursivité incluent DFS of Graph, Towers of Hanoi, Different Types of Tree Traversals, etc. Pour en savoir plus sur la récursivité et d'autres concepts de science des données, consultez les cours en ligne de science des données de l'IIIT-B.

Lire : 13 idées de projets de structure de données intéressantes

Comment fonctionne la récursivité ?

Le concept de récursivité est établi sur l'idée qu'un problème peut être résolu beaucoup plus facilement et en moins de temps s'il est représenté dans une ou des versions plus petites. L'ajout de conditions de base pour arrêter la récursivité est une autre partie importante de l'utilisation de cet algorithme pour résoudre un problème.

Aucune expérience de codage requise. Accompagnement de carrière à 360°. Diplôme PG en Machine Learning & AI de l'IIIT-B et upGrad.

Les gens croient souvent qu'il n'est pas possible de définir une entité en fonction d'elle-même. La récursivité prouve que cette théorie est fausse. Et si cette technique est effectuée de la bonne manière, elle pourrait donner des résultats très puissants. Voyons comment fonctionne la récursivité avec quelques exemples. Qu'est-ce qu'une phrase ? Il peut être défini comme deux phrases ou plus réunies à l'aide d'une conjonction. De même, un dossier peut être un périphérique de stockage utilisé pour stocker des fichiers et des dossiers. Un ancêtre pourrait être un parent d'un et un ancêtre d'un autre membre de la famille dans l'arbre généalogique.

La récursivité aide à définir des situations complexes à l'aide de quelques mots très simples. Comment définiriez-vous habituellement un ancêtre ? Un parent, un grand-parent ou un arrière-grand-parent. Cela pourrait continuer. De même, définir un dossier peut être une tâche difficile. Il peut s'agir de tout ce qui contient des fichiers et des dossiers qui pourraient être des fichiers et des dossiers à part entière, et cela pourrait encore continuer. C'est pourquoi la récursivité rend la définition des situations beaucoup plus facile que d'habitude.

La récursivité est également une technique de programmation assez bonne. Un sous-programme récursif est défini comme un sous-programme qui s'appelle directement ou indirectement. L'appel d'un sous-programme signifie directement que la définition du sous-programme a déjà l'instruction d'appel d'appeler le sous-programme qui a été défini.

D'autre part, l'appel indirect d'un sous-programme se produit lorsqu'un sous-programme appelle un autre sous-programme, qui appelle ensuite le sous-programme d'origine. La récursivité peut utiliser quelques lignes de code pour décrire une tâche très complexe. Portons maintenant notre attention sur les différents types de récursivité que nous avons déjà abordés.

A lire aussi : Top 6 des langages de programmation à apprendre

Types de récursivité

Il n'y a que deux types de récursivité comme cela a déjà été mentionné. Voyons en quoi ils sont différents les uns des autres. La récursivité directe est la méthode la plus simple car elle n'implique qu'une seule étape d'appel de la fonction, de la méthode ou de la sous-routine d'origine. D'autre part, la récursivité indirecte implique plusieurs étapes.

Le premier appel est effectué par la méthode d'origine à une seconde méthode, qui à son tour appelle la méthode d'origine. Cette chaîne d'appels peut comporter un certain nombre de méthodes ou de fonctions. En termes simples, nous pouvons dire qu'il y a toujours une variation dans la profondeur de la récursivité indirecte, et cette variation de profondeur dépend du nombre de méthodes impliquées dans le processus.

La récursivité directe peut être utilisée pour appeler une seule fonction par elle-même. D'autre part, la récursivité indirecte peut être utilisée pour appeler plus d'une méthode ou fonction à l'aide d'autres fonctions, et cela aussi, un certain nombre de fois. La récursivité indirecte ne crée pas de surcharge contrairement à son homologue direct.

Quand utilise-t-on la récursivité ?

Il existe des situations dans lesquelles vous pouvez utiliser la récursivité ou l'itération. Cependant, vous devez toujours choisir une solution qui semble être la solution la plus naturelle à un problème. Une récursivité est toujours une option appropriée lorsqu'il s'agit d'abstraction de données. Les gens utilisent souvent des définitions récursives pour définir les données et les opérations associées.

Et il ne sera pas faux de dire que la récursivité est la plupart du temps la solution naturelle aux problèmes associés à la mise en œuvre de différentes opérations sur les données. Cependant, certaines choses liées à la récursivité peuvent ne pas en faire la meilleure solution pour tous les problèmes. Dans ces situations, une alternative comme la méthode itérative est la meilleure solution.

L'implémentation de la récursivité utilise beaucoup d'espace de pile, ce qui peut souvent entraîner une redondance. Chaque fois que nous utilisons la récursivité, nous appelons une méthode qui entraîne la création d'une nouvelle instance de cette méthode. Cette nouvelle instance porte différents paramètres et variables, qui sont stockés sur la pile, et sont repris au retour. Ainsi, bien que la récursivité soit la solution la plus simple que les autres, ce n'est généralement pas la plus pratique.

De plus, nous n'avons pas d'ensemble de règles prédéfinies qui peuvent aider à choisir l'itération ou la récursivité pour différents problèmes. Le plus grand avantage de l'utilisation de la récursivité est qu'il s'agit d'une méthode concise. Cela rend la lecture et la maintenance des tâches plus faciles que d'habitude. Mais les méthodes récursives ne sont pas les méthodes les plus efficaces à notre disposition car elles prennent beaucoup d'espace de stockage et consomment beaucoup de temps lors de la mise en œuvre.

Garder à l'esprit quelques éléments peut vous aider à décider si le choix d'une récursivité pour un problème est la bonne voie à suivre ou non. Vous devez choisir la récursivité si le problème que vous allez résoudre est mentionné en termes récursifs et que la solution récursive semble moins complexe.

Vous devez savoir que la récursivité, dans la plupart des cas, simplifie la mise en œuvre des algorithmes que vous souhaitez utiliser. Maintenant, si les complexités associées à l'utilisation de l'itération et de la récursivité sont les mêmes pour un problème donné, vous devriez opter pour l'itération car les chances qu'elle soit plus efficace sont plus élevées.

Consultez également: 23 meilleurs cours de programmation informatique pour obtenir un emploi

Conclusion

Cependant, il peut y avoir des situations dans lesquelles prendre une décision peut ne pas être si facile. Il faut choisir entre efficacité et simplicité. Si vous êtes un designer expérimenté, vous sauriez exactement quand donner plus d'importance à l'efficacité et quand choisir la simplicité ou la concision est la voie à suivre.

Si vous êtes curieux d'en savoir plus sur la structure des données, la science des données, consultez le programme Executive PG en science des données de IIIT-B & upGrad qui est créé pour les professionnels en activité et propose plus de 10 études de cas et projets, des ateliers pratiques, du mentorat avec l'industrie experts, 1-on-1 avec des mentors de l'industrie, plus de 400 heures d'apprentissage et d'aide à l'emploi avec les meilleures entreprises.

Quelle est l'application réelle la plus courante de la récursivité ?

La récursivité est un processus dans lequel la fonction s'appelle elle-même indirectement ou directement afin de résoudre le problème. La fonction qui exécute le processus de récursivité est appelée une fonction récursive. Certains problèmes peuvent être résolus assez facilement à l'aide d'un algorithme récursif.

L'application la plus courante de la récursivité dans la vie réelle est lorsque vous calculez combien d'argent vous avez dans une boîte remplie de roupies. 100 billets. S'il y a trop de notes, vous pouvez simplement demander à votre ami de faire le même travail en divisant la pile entière en deux. Une fois que vous avez tous les deux fini de compter, vous n'aurez qu'à additionner les deux résultats afin d'obtenir le montant total.

Quelles sont les propriétés que doit avoir une fonction récursive ?

Une fonction récursive a la capacité de continuer comme une boucle infinie. Il y a deux propriétés qui doivent être définies pour toute fonction récursive pour l'empêcher d'entrer dans une boucle infinie. Elles sont:

1. Critères de base – Il doit y avoir une condition de base prédéfinie. Chaque fois que ce critère de base est rempli, la fonction cessera de s'appeler.
2. Approche progressive – Les appels récursifs doivent consister en une approche progressive. Chaque fois qu'un appel récursif est effectué à la fonction, il doit atteindre près de la condition de base.

Quels sont les avantages et les inconvénients de la récursivité ?

Certains des avantages de la récursivité sont qu'il vous suffit de définir la condition de base et le cas récursif dans une fonction récursive. Cela rend le code assez simple et court par rapport à un code itératif, et certains problèmes comme Tree Traversal et Graph sont intrinsèquement récursifs.

Les plus grands inconvénients de la récursivité sont qu'il y a plus d'espace requis pour les fonctions récursives par rapport à un programme itératif parce que chaque appel de fonction doit rester dans la pile jusqu'à ce que la condition de base soit remplie, et il y a aussi des exigences de temps plus grandes, parce que la pile croît après chaque appel de fonction, et la réponse finale ne peut être renvoyée qu'après avoir extrait tous les éléments de la pile.