1 2 3 3
3 Réponses :
Ne soyez pas confus sur le code récursif - AFAIK, cela pourrait être fait sans code récursif.
On dirait qu'il trie le contenu de la variable AR dans une nature détruite et supprime des doublons. Mais si la valeur n'existe pas dans AR, elle imprime simplement A pour chaque élément d'AR. Et si un existe dans AR, il imprime la prochaine valeur supérieure, Et si cela existe dans AR, il imprime la prochaine valeur supérieure, Mais si la valeur liquidation d'A n'existe pas dans AR, imprimez-la simplement pour les itérations de boucle restantes. P>
public void find(int ar[], int a) {
for (int i = 0; i < ar.length; i++) {
System.out.println(a);
if (doesArrayContain(ar, a)) {
//System.out.println(a+" "+i)
a = a + 1;
}
}
}
private boolean doesArrayContain(int ar[], int a) {
for (int idx = 0; idx < ar.length; idx++) {
if (ar[idx] == a) {
return true;
}
}
return false;
}
Il apparaît que vous commencez avec
boucle en boucle d'un biais d'un entier "de taille de taille n 'pour trouver une valeur" A " Si cela existe, vous avez ensuite recommandé de trouver 'A + 1' P>
main.find [1,2], 1
console >> 1
first recursive [1,2], 2. -------- match for 1
consoles >> 2
second recursive [1,2] 3. -------- match for 2
consoles >> 3
exit second recursive (no match for 3)
third recursive [1,2], 2. -------- match for 2
consoles >> 3
exit third recursive (no match for 3)
loop ends
alors la méthode de recherche est appelée comme suit: p> pour la sortie: strong>
Inside Trouvez la méthode p> sortie finale: p> Si vous modifiez la valeur du type primitif Variables (comme
a = 1 code> est imprimé. strong> comme passé de la méthode principale. LI>
ar = [1,2] code> est itéré. li>
a [0] = 1 = a code>, A est incrémenté à 2. Recherche (AR = [1,2], A = 2) code> est appelé.
a = 2 code> est imprimé. strong> li>
ar = [1,2] code> est itéré. li>
a [0] = 1! = A = 2. Code> Li>
a [1] = 2 = A code>, A est incrémenté à 3. Rechercher (ar = [1,2], A = 3) code> est appelé.
a = 3 code> est imprimé. strong>. Li>
ar = [1,2] code> est itéré. li>
a = 3 code>. li>
ul>
li>
ul>
li>
a [1] = 2 = A code>. a a été tourné de 1 à 2 dans l'itération précédente em>. Encore une fois a = 2 + 1 = 3 code>. Recherche (AR = [1,2], A = 3) CODE> est appelé.
a = 3 code> est imprimé. strong>. Li>
ar = [1,2] code> est itéré. li>
int a code>) à l'intérieur d'un appel récursif, la modification n'affectera pas la valeur de A pour la fonction mère. p> p>
Merci effectivement.Il a aidé.
Heureux d'avoir pu aider! Si cela ou une réponse a résolu votre question, veuillez envisager de l'accepter en cliquant sur le check-Mark. Cela indique à la communauté plus large que vous avez trouvée une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation de faire cela.
Utilisez un débogueur pour par l'intermédiaire du code, ou même la traversez avec un crayon et du papier pour écrire les valeurs variables.