Comment une boucle pour chaque fonctionne-t-elle lorsqu'elle appelle une méthode, soit une méthode de récursivement, soit une méthode différente?
Exemple: P>
for(String permutation : permute(remaining)) { // Concatenate the first character with the permutations of the remaining chars set.add(chars.charAt(i) + permutation); }
5 Réponses :
foreach boucle fonctionne sur n'importe quelle classe qui implémente l'interface code> code> est uniquement Syntaxe pour appeler hasnext () code> et
suivant () code> suivant sur un
itérateur code>. Même thread de même boucle et la fonction est appelée une fois. P>
Merci pour votre réponse. :)
L'appelle une fois, stocke le résultat, prévoit-il.
Comme ceci: p> EDIT: Si cela est récursif, cela ne fait aucune différence. Chaque couche de récursivité a simplement sa propre portée, et donc sa propre variable "TEMP". Ainsi, la fonction de permutation recueille au niveau le plus bas, puis chaque niveau supérieur fera son complètement séparé em> de la boucle code> successivement. P> p>
@ user1965283 Pas de problème, mais n'oubliez pas d'accepter votre réponse préférée (qui devrait être Ulmangt, comme sa réponse est plus fraîche que la mienne)
Selon le Java Spécification de la langue pour le est exécuté comme suit: p> Ainsi, l'expression amélioré pour code> Énoncé, l'expression:
code> (qui doit être de type
itérable code>) n'a que son
itérateur () code> méthode appelée une fois. p> p>
@ user1965283: Bienvenue à cela. Veuillez accepter la réponse: Stackoverflow.com/faq
Dans votre exemple, le résultat de Un exemple plus simple serait Quelque chose comme ça: p> c'est quelque chose que vous pouvez voir dans des projets qui ont lu dans une quantité indéterminée de lignes. L'expression permuté (restant) code> est évalué avant em> l'un entrait dans la boucle. Bien que l'amélioration de la boucle ne soit vraiment rien de plus que le sucre syntaxique pour les itérateurs, il suit toujours les mêmes principes que d'autres boucles, il doit avoir un objectif à opérer avec avant de pouvoir faire autre chose.
entrée.hasnext () code> doit être évaluée en premier, puis vous pouvez boucler. P> p>
Merci pour votre réponse. :)
Si nous compilons ce test
Set set = new HashSet(); String s; for(Iterator iterator = set.iterator(); iterator.hasNext();) s = (String)iterator.next();
Pourquoi ne le codez-vous pas et ne vous sentez-vous pas dans un débogueur, comme Eclipse?
Cela n'a rien à voir avec la récursion, comme posé.
Ou utilisez Javap pour désassembler!
+1 pour essayer de comprendre ce qui semble fortement être vos devoirs.