Sto cercando di imparare la ricorsione. Ho copiato questo bit di codice dal mio libro e ho aggiunto i display per aiutarmi a rintracciare cosa sta facendo il metodo e quando.
public static void main(String[] args) {
System.out.println(sum(4));
}//main
public static int sum(int n) {
int sum;
System.out.println("n = " + n + "\n");
if (n == 1)
sum = 1;
else
sum = sum(n - 1) + n;
System.out.println("n after function = " + n + "\n");
System.out.println("sum after function = " + sum + "\n");
return sum;
}
Ecco i risultati:
n = 4
n = 3
n = 2
n = 1
n after function = 1
sum after function = 1
n after function = 2
sum after function = 3
n after function = 3
sum after function = 6
n after function = 4
sum after function = 10
10
Mi sto bloccando su ciò che viene archiviato nello stack, o forse su come viene memorizzato.
C'è un modo per mostrare cosa c'è nella pila mentre n è in conto alla rovescia per 1?
Questo è un concetto strano - è come un loop invisibile che memorizza valori in un modo che non capisco.