View
146
Download
0
Category
Preview:
Citation preview
RICORSIONETalk 3
DIGRESSIONE: STACK E HEAP
DIGRESSIONE: STACK E HEAP
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).
Ricorsione:
vedi: Ricorsione.
program Recursion;!{$APPTYPE CONSOLE}!!procedure Recurse(I: Integer);!begin! Writeln(I);! Recurse(I + 1);!end;!!begin! Recurse(0);!end.
FUNZIONI RICORSIVE
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
(function recurse(i) {! console.log(i);! recurse(i++);!})(0);
FUNZIONI RICORSIVE
10 I = 0!20 PRINT I!30 I = I + 1!40 GOSUB 20
FUNZIONI RICORSIVE
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.
CONDIZIONE DI TERMINAZIONE
ESEMPIO: MERGESORT
PROBLEMI RICORSIVI
Non ci sono problemi intrinsecamente ricorsivi, ma algoritmi ricorsivi che risolvono i problemi.
STRUTTURE DATI RICORSIVE
• Albero dei parametri di RBI.
• Database delle anagrafiche di BBox.
• I punti della nuvola di punti.
OTTIMIZZAZIONE DI STRUTTURE DATI
• Implementazioni iterative di algoritmi ricorsivi.
• Strutture dati ausiliarie.
Ricorsione:
se non l'hai ancora capita vedi: Ricorsione.
Recommended