récursivité peut être une technique utile pour les programmeurs . Les fonctions récursives , parfois appelées "méthodes" dans des langages tels que Java , sont des fonctions qui s'appellent eux-mêmes . Il ya certaines situations où les fonctions récursives sont particulièrement appropriés. Toutefois, il peut être difficile de mettre en œuvre correctement une fonction récursive , de sorte qu'ils ne devraient être utilisées le cas échéant . Les fonctions récursives sont souvent utiles lorsqu'il s'agit de structures de données et les activités mathématiques. Tri
lorsque les programmes de données du modèle, soit en interne ou importée d' une source comme une base de données , ils ont souvent besoin de faire le tri . Certaines structures de données ne sont pas ordonnées , ce qui signifie que les éléments ne sont pas disposées dans un ordre consécutif . Par exemple, un programme pourrait contenir un tableau avec des chaînes de texte à l'intérieur. Pour trier le tableau afin que les chaînes de texte sont classés par ordre croissant par ordre alphabétique , le programme peut avoir besoin d'utiliser un algorithme. Le tri par fusion est un exemple d' une méthode itérative de ce processus. Fusionner les œuvres de tri en divisant sans cesse le tableau en deux, chaque moitié de tri avant de les fusionner en un seul retour .
Recherche
Lorsque les programmes stockent des données dans des structures de données , ils sont souvent besoin de localiser des éléments particuliers à l'aide algorithmes de recherche , qui peuvent bénéficier de la récursivité. Par exemple, si un tableau est de stocker les valeurs dans l'ordre alphabétique , le programme peut utiliser la récursivité pour comprendre quelle est la position d'un certain élément est . Recherche binaire consiste le programme de vérification continuellement un milieu d' élément dans le tableau. Si l'élément correspond à celui du programme est à la recherche , il peut arrêter . Si ce n'est pas l'élément en question , l'algorithme peut vérifier si elle est supérieure ou inférieure à l'élément de recherche. Si elle est supérieure , l'algorithme peut éliminer la moitié supérieure de la structure au-delà de l'élément en cours , en tant que l'élément de recherche doit être dans la moitié inférieure . Ce processus se poursuit jusqu'à ce que l'élément se trouve.
Structures de données
Au moment de décider sur des algorithmes , les programmeurs devraient se demander si une fonction n'est pas récursive pourrait résoudre itératif la tâche ainsi qu'un récursive une . Par exemple, dans certaines structures de données , un programme devra rechercher à travers de façon linéaire jusqu'à ce qu'il localise un objet de recherche. Dans ce cas, il n'y a pas d'autre alternative que de parcourir la structure. Algorithmes récursifs simplifier la tâche à chaque itération , de vérifier si le point final est arrivé, puis en appelant à nouveau la fonction si elle n'a pas. Pour démontrer les similitudes entre la récursivité et itération, la méthode Java suivant montre une méthode récursive aperçu : Public vide processNumber (int myNum ) {if ( myNum > 100 ) return; autre processNumber ( myNum * 5) ;}
< p > Une alternative itérative mise en œuvre de ce serait comme suit : . int aNum = 3; while ( aNum <100) { aNum * = 5; }
Dans ce cas, la version itérative est plus simple
< br > Photos des tâches mathématiques
Certaines tâches de traitement mathématique sont particulièrement bien adaptés à des fonctions récursives. Séquences de Fibonacci démontrent traitement récursif . Chaque nombre dans une suite de Fibonacci est la somme des deux précédents . L'exemple de code Java suivant illustre une fonction pour trouver un nombre de Fibonacci : public int getFibonacci (int fNum ) {if ( fNum < = 1) fNum de retour; else return getFibonacci ( fNum -1) + getFibonacci ( fNum -2); }
la méthode renvoie le nombre de Fibonacci à la position indiquée par un paramètre entier lorsque le code appelle, comme suit : getFibonacci (8);
reviendrait le huitième numéro. ( Voir les références 3 , 4, 5 )