Dans un programme Java, une méthode récursive est une méthode qui s'appelle elle-même . Méthodes récursives peuvent aider les programmeurs à concevoir un extrait de code pour simplifier un problème. Méthodes récursives aussi semblent souvent être concise , mais la création d'une fonction récursive efficace peut être très difficile . Comme pour les boucles et autres structures de contrôle en Java , les développeurs doivent travailler à travers ce qui va se passer quand une fonction récursive exécute . Méthodes récursives provoquent un ensemble de problèmes communs quand il n'est pas correctement structuré . Résolution de problèmes échec
Les programmeurs utilisent des méthodes récursives pour résoudre des problèmes particuliers. Naturellement, une méthode récursive ne fournira pas de fonctionnalité utile si elle ne résout pas le problème, il a été conçu. Cela arrive parfois lorsque le programmeur a choisi d'utiliser une fonction récursive où il n'est pas approprié . En règle générale, une méthode récursive est idéal pour les situations dans lesquelles vous avez besoin pour résoudre un problème en utilisant des étapes itératives . Chaque fois que l' exécution de la méthode , il convient de rendre le problème plus simple et apporter votre programme un peu plus à résoudre. Le résultat final de la méthode récursive devrait être la solution à votre problème , par exemple la localisation d'un élément dans un objet de collection de données.
No End Case
Pour une fonction récursive de travailler sans obtenir votre programme coincé dans une boucle infinie , elle doit avoir un cas de fin bien définie. Cela signifie qu'il doit y avoir une exécution finale , plutôt que la méthode d'exécution sans cesse . Les programmeurs mettent souvent en œuvre cette aide d'instructions conditionnelles à l'intérieur de la méthode , comme dans l'exemple suivant : public void doItRecursively (int num) {if (num <1 ) return; else { System.out.println ( num) ; doItRecursively (num /2) ;}}
Pour appeler cette fonction , un programme peut utiliser le code suivant : doItRecursively (10);
Dans ce cas, la fonction exécutera cinq fois , en sortant de la cinquième itération. Chaque fois que la méthode exécute se rapproche du scénario de fin, ce qui le conditionnel if vérifie pour . Si la méthode ne contient pas l'instruction conditionnelle , il serait parcourir sans cesse .
Pas de récursion
Le compteur question à une méthode itérative sans cesse en boucle est une méthode que n'itère pas du tout. Cela se produit également lorsque l'instruction conditionnelle n'est pas correctement structuré . Par exemple, compte tenu de la méthode " doItRecursively " , ce qui suit modifié si la déclaration poserait un problème : if ( nombre > 0 ) return;
Si la méthode est appelée uniquement avec des valeurs entières positives que le paramètre, l' le contenu ne sera jamais répéter que le point final aura été atteint tout de suite .
méthode incorrecte appels
Si le programmeur d'appeler une méthode récursive n'a pas une compréhension claire de sa fonction , ils peuvent l'utiliser d'une manière qui provoque itération sans fin ou sans itération. Par exemple, le code conditionnel modifié suivant dans la méthode pourrait facilement être appelé à tort : if ( num <0 ) return;
Si la méthode est appelée uniquement avec les valeurs des paramètres entiers positifs , il n'atteindra jamais ce point final et va provoquer une boucle infinie. Méthodes récursives peuvent causer beaucoup des mêmes écueils que les boucles , de sorte qu'ils ne nécessitent pratique pour la mise en œuvre effective .