Salve a tutti, perdonate la domanda che, per chi è molto più avanti di me, sembrerà sicuramente stupidissima
però ho un dubbio in merito all'attivazione dei record (pila) in una ricorsione che, se non ho capito male, dovrebbe definirsi DOPPIA o MUTUA, giusto? Incollo qui in basso il frammento di codice.
La domanda è: quando, nel main, viene richiesto di calcolare il prodotto fra numeroPrimo e numeroSecondo (poniamo ad esempio che numeroPrimo = 2 e numeroSecondo = 3. Dunque 2x3=6 è il risultato che mi aspetto), il metodo main viene sospeso e:
1) parte l'attivazione di prodotto(int x, int y) {...}, il quale, a sua volta viene sospeso dall'attivazione del metodo somma(x, prodotto(x, y-1)) {...}
2) parte l'attivazione di somma(x, prodotto(x, y-1)) {...}
Cosa accade ora..?? Intendo: da quel che ho capito l'esecuzione di somma(x, prodotto(x, y-1)) {...} dovrebbe di nuovo interrompersi a favore dell'attivazione del metodo più interno, cioè di prodotto(x, y-1), che però al suo interno contiene ancora anche la somma, ovvero.... un cane che si morde la coda.
Potreste aiutarmi a capire meglio cosa accade in casi del genere scrivendomi proprio passo dopo passo come vengono aggiornati tutti i parametri? Sicuramente sto tralasciando/confondendo qualcosa...
Grazie mille davvero! 

codice:
import javax.swing.JOptionPane;
public class CalcolaProdotto {
private static int somma(int x, int y)
{
if(y == 0) return x;
else return 1 + somma(x, y-1);
}
private static int prodotto(int x, int y)
{
if (y == 0 ) return 0;
else return somma(x, prodotto(x, y-1));
}
public static void main(String[] args)
{
int primoNumero = Integer.parseInt(JOptionPane.showInputDialog("Immetti la x"));
int secondoNumero = Integer.parseInt(JOptionPane.showInputDialog("Immetti la y"));
int risultato = prodotto(primoNumero, secondoNumero);
System.out.println("Il risultato è: " + risultato);
}
}