|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
[JAVA] Aiuto riguardo ricorsione e metodi ricorsivi
Salve a tutti, sto studiando java all'università, ma sono incappato nel capitolo della ricorsione e non riesco ad andare avanti.
Ho capito come funziona (gli esempi del fattoriale e della serie di fibonacci) ma facendo gli esercizi mi blocco. Questo è l'esercizio che ho svolto, ma non mi è chiaro l'uso del metodo ricorsivo recursivelyfindMin //********* metodo statico ausiliario RICORSIVO per trovare il valore minimo nell'array ******************** public static int recursivelyfindMin(int[] v, int vSize) { if (v == null || v.length < 1 || vSize < 1) throw new IllegalArgumentException("Errore: array vuoto o non valido!"); if (vSize == 1) return v[0]; // caso BASE int subMin = recursivelyfindMin(v, vSize - 1); // passo ricorsivo if (v[vSize-1] < subMin) { return v[vSize-1]; } else // significa che subMin < v[vSize-1] { return subMin; } } qualcuno mi aiuterebbe? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Fai i passaggi a mano.
a = [9, 3, 5] rfm(a, 3) --submin = rfm(a, 2) ---submin = frm(a, 1) ----= a[0] = 9 ---a[2-1] < 9 ? Sì , = 3 --a[3-1] < 3 ? No = 3 = 3 Vale a dire che prende il primo numero nell'array e lo mette in subMin, poi confronta subMin col secondo e prende il minore dei due, poi confronta questo col terzo e prende il minore dei due. Eccetera. Comunque è un caso meraviglioso di ricorsione perchè di solito in un metodo riscorsivo non ci si capisce una mazza ma essendo più corto dell'iterativo si dice "eh, be', che eleganza". In questo caso è pure lungo quindi emerge proprio la luridità della ricorsione, come aprire le finestre in una mattina di campagna e respirare a pieni polmoni quella zaffata di letame che non te la togli più dal naso fino alle cinque del pomeriggio. Ecco, quella è la ricorsione. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
Fenomenale. Davvero, spiegazione chiarissima (commenti compresi! ahah) e finalmente ho capito anche come provare a risolvere le ricorsioni a mano!
Grazie mille |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:20.



















