2010-09-12 14 views
0

me laisse perplexe pourquoi la sortie est pas ce que je pense qu'il est dans ce qui suit imbriquées while:Nichée tandis que le comportement de la boucle en R

i = 1 
j = 1 
while(i<5){ 
print("i") 
print(i) 
i = i + 1 
while(j<5){ 
    print("j") 
    print(j) 
    j = j + 1 
} 
} 

La sortie que je reçois est:

[1] "i" 
[1] 1 
[1] "j" 
[1] 1 
[1] "j" 
[1] 2 
[1] "j" 
[1] 3 
[1] "j" 
[1] 4 
[1] "i" 
[1] 2 
[1] "i" 
[1] 3 
[1] "i" 
[1] 4 

Mais je me attendais quelque chose le long des lignes de

[1] "i" 
[1] 1 
[1] "j" 
[1] 1 
[1] "j" 
[1] 2 
[1] "j" 
[1] 3 
[1] "j" 
[1] 4 
[1] "i" 
[1] 2 
[1] "j" 
[1] 1 
[1] "j" 
[1] 2 
[1] "j" 
[1] 3 
[1] "j" 
[1] 4 
... 

Toutes les suggestions? Merci de votre aide.

Répondre

7

Il n'y a rien de mal dans le comportement de la boucle.

i = 1 // Beginning of your code, you're initializing i, changing its value to 1 
j = 1 // ... initializing j as well. 
while(i<5){ // looping while i < 5 
print("i") 
print(i) 
i = i + 1 // incrementing i 
while(j<5){ // looping while j is < 5 
    print("j") 
    print(j) 
    j = j + 1 // incrementing j 
} 
} 

Pensez maintenant un peu plus sur votre code.

Ce que vous voulez, c'est que votre deuxième boucle while boucle effectivement 4 fois pour chaque boucle du premier.

Vous attendez donc que la valeur de j soit ramenée à 1 dans la portée de la première boucle while, comme par magie? Vous pourriez vouloir essayer de le faire vous-même, n'est-ce pas?

+0

Merci! j doit être réinitialisé à 1 !!! Vous êtes un gentleman! – user97979717