2010-11-06 5 views
1

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

+4

Anecdote: certaines langues ont seulement récursion; pas de boucles. – nmichaels

+0

Vraiment, lesquels? – Snowman

+0

@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()'. –

Répondre

6

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); 
    } 
} 
+0

Voir modification s'il vous plaît .. – Snowman

+2

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. –

+0

@Peter: Oui, ce serait! –

2

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.

Questions connexes