Ce problème est source de confusion. J'ai un arbre, et je veux écrire une méthode qui compte le nombre de petits-enfants d'un certain noeud (mais pas de grands granchildren). Je ne peux pas utiliser des boucles, seulement la récursivité. Donc, la question est de savoir comment j'implémenterais mon cas de base? Comment puis-je l'arrêter? Je ne peux pas penser à un moyen que cela serait mis en œuvre ...Arrête la récursivité après un certain nombre d'étapes
Répondre
Avoir un argument depth
à votre méthode récursive et avoir ajouter 1 avant d'auto-appels, i.e. .:
void myMethod(int depth) {
/* ... Do something ... */
if (depth < maxDepth) {
child.myMethod(depth + 1);
}
}
Voir modification s'il vous plaît .. – Snowman
D'où provient maxDepth? Ne serait-il pas préférable d'avoir une profondeurRemaining qui décrémentée à chaque appel, quand la profondeur atteint 0, stop. –
@Peter: Oui, ce serait! –
Passez un paramètre "profondeur de récursivité" à votre fonction récursive, l'incrémenter pour chaque appel à la fonction.
Lorsque vous atteignez votre limite, vous arrêtez récursivement.
- 1. JavaMail arrête d'envoyer des mails après un certain temps
- 2. Division après un certain nombre de caractères
- 3. Comment valider après un certain nombre de publications
- 4. C# Timer Class - Arrêt après un certain nombre d'exécutions
- 5. SQL Coupés chaîne après un certain nombre d'espaces
- 6. Python: arrête l'exécution après un délai maximum
- 7. java: exécute une fonction après un certain nombre de secondes
- 8. Icône Badge Nombre * sans » un certain nombre
- 9. flash film s'arrête après un certain temps?
- 10. Haskell - interpréter un certain nombre
- 11. Python: Activer touche F6 après un certain intervalle
- 12. Rupture de la chaîne dans un certain nombre de caractères
- 13. Erreur WMI après un certain temps
- 14. PHP: Conversion d'un nombre variable d'URL pour un certain nombre
- 15. SQLite - augmenter la valeur d'un certain nombre
- 16. Comment puis-je afficher uniquement un certain nombre de chiffres après une décimale dans un JTextComponent?
- 17. SELECT seulement un certain nombre de lignes à la fois
- 18. Le script redémarre après un certain temps
- 19. WebView s'écraser après un certain temps
- 20. Supprimer tout texte après un certain point
- 21. Kill Process après un certain temps + C#
- 22. Rediriger site Web après un certain temps
- 23. Application Gel après un certain temps d'inactivité
- 24. la liaison OneWay travail arrête après la cible
- 25. exécuter la fonction php/javascript après un certain temps
- 26. Dissimuler la barre de progression après un certain temps
- 27. La connexion mysql se ferme après un certain temps? (PHP)
- 28. sauter un certain nombre de cadres sur une timeline
- 29. jQuery bascule afficher/masquer les éléments après un certain nombre d'éléments correspondants
- 30. HtmlUnit arrête l'exécution de JavaScript après un window.open
Anecdote: certaines langues ont seulement récursion; pas de boucles. – nmichaels
Vraiment, lesquels? – Snowman
@fprime: en ce qui concerne votre mise à jour, je ne vois pas comment cela pourrait fonctionner. Vous ne passez rien aux appels récursifs de 'countGrandChildren()'. –