03 - ricorsione
TRANSCRIPT
![Page 1: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/1.jpg)
RICORSIONETalk 3
![Page 2: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/2.jpg)
DIGRESSIONE: STACK E HEAP
![Page 3: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/3.jpg)
DIGRESSIONE: STACK E HEAP
![Page 4: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/4.jpg)
DIGRESSIONE: CODICE RIENTRANTE
Codice che è possibile eseguire più volte in contemporanea.
• Non si modifica durante l'esecuzione.
• Non invoca routine non rientranti.
• Usa solo variabili allocate sullo stack.
• Non modifica aree di memoria condivisa (niente variabili globali o statiche).
![Page 5: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/5.jpg)
Ricorsione:
vedi: Ricorsione.
![Page 6: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/6.jpg)
program Recursion;!{$APPTYPE CONSOLE}!!procedure Recurse(I: Integer);!begin! Writeln(I);! Recurse(I + 1);!end;!!begin! Recurse(0);!end.
FUNZIONI RICORSIVE
![Page 7: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/7.jpg)
public class Recurse {! public static void main(String[] args) {! recurse(0);! }!! private static void recurse(int i) {! System.out.println(i);! recurse(i + 1);! }!}
FUNZIONI RICORSIVE
![Page 8: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/8.jpg)
(function recurse(i) {! console.log(i);! recurse(i++);!})(0);
FUNZIONI RICORSIVE
![Page 9: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/9.jpg)
10 I = 0!20 PRINT I!30 I = I + 1!40 GOSUB 20
FUNZIONI RICORSIVE
![Page 10: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/10.jpg)
DIVIDE AND CONQUER
• Suddividere il problema in sotto problemi.
• Risolvere ciascun problema nello stesso esatto modo del problema principale.
• Mettere insieme i risultati dei sotto problemi.
![Page 11: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/11.jpg)
CONDIZIONE DI TERMINAZIONE
![Page 12: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/12.jpg)
ESEMPIO: MERGESORT
![Page 13: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/13.jpg)
PROBLEMI RICORSIVI
Non ci sono problemi intrinsecamente ricorsivi, ma algoritmi ricorsivi che risolvono i problemi.
![Page 14: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/14.jpg)
STRUTTURE DATI RICORSIVE
• Albero dei parametri di RBI.
• Database delle anagrafiche di BBox.
• I punti della nuvola di punti.
![Page 15: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/15.jpg)
OTTIMIZZAZIONE DI STRUTTURE DATI
• Implementazioni iterative di algoritmi ricorsivi.
• Strutture dati ausiliarie.
![Page 16: 03 - Ricorsione](https://reader033.vdocuments.mx/reader033/viewer/2022052310/5557d50cd8b42ab6258b4952/html5/thumbnails/16.jpg)
Ricorsione:
se non l'hai ancora capita vedi: Ricorsione.