Salve a tutti, perdonate la domanda che, per chi è molto più avanti di me, sembrerà sicuramente stupidissimaperò 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); } }

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.
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...

Rispondi quotando
