|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2015
Messaggi: 26
|
[JAVA] Traccia di esecuzione
Salve, non riesco a capire questa traccia di esecuzione, cioè esce 7 ma a me viene 6:
// invocando mah(2) Codice HTML:
static int mah(int x) {
int i;
int y = 3;
for (i = 0; i<4; i++) {
if (y<5) {
y = y+x;
} else {
y = y-i;
}
}
return y+i;
}
1) x = 2 y = 3 i = 0 y < 5 vero quindi y = 5 2) x = 2 y = 5 i = 1 y < 5 falso quindi y = 4 3) x = 2 y = 4 i = 2 y < 5 vero quindi y = 6 4) x = 2 y = 6 i = 3 y < 5 falso qundi y = 3 risultato y + i = 3 + 3 = 6 ma deve venire 7, cosa sbaglio? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
y = 3 i = 4 i < 4 == false quindi il corpo non viene più eseguito (ma i è pur sempre == 4!). risultato y + i = 3 + 4 = 7 Ultima modifica di [Kendall] : 04-06-2015 alle 15:55. |
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2015
Messaggi: 26
|
Ma i non va da 0 a 3? Perchè va fino a 4, il for non indica i<4, quindi a 4 non dovrebbe arrivarci? Ad esempio se era <= 4 fino a dove arrivava i?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
Il ciclo si interromperà nel momento stesso in cui i viene incrementato a 4 e la condizione non è più vera. Ma in quel momento i sarà pari appunto a 4. Il classico ciclo for Codice:
for (int i = 0; i < length; i++) {
// istruzioni
}
Codice:
int i = 0;
while(i < length) {
// istruzioni
i++;
}
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:51.




















