Non posso per la vita di me capire perché questo restituisce 0 anziché 5. i
continua ad essere incrementato prima che raggiunga l'ultima istruzione return
, tuttavia restituisce sempre 0, dalla prima chiamata nello stack. Penserei che dal momento che la chiamata più recente nello stack colpisce return
nel blocco i == 5
prima restituisce e stampa 5.
Restituisce 0
public static void main(String[] args) {
System.out.println(incrementI(0));
}
public static int incrementI(int i) {
if (i == 5){
return i;
} else {
incrementI(i + 1);
}
return i;
}
Restituisce 5
public static int incrementI(int i) {
if (i == 5){
return i;
} else {
return incrementI(i + 1);
}
}
Non sto cercando una correzione del codice, ma piuttosto una spiegazione del perché la ricorsione funziona in questo modo.