Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoBaldassare Di gregorio Modificato 10 anni fa
1
eliminare la ricorsione ovvero gestire direttamente la pila
2
maggio 2003ASD - eliminare la ricorsione2 perché la ricorsione? strumento potente per descrivere/progettare algoritmi idea fondamentale: risolvere un problema di "taglia" (dimensione dell'input) n sfruttando le soluzioni di uno o più problemi simili ma di taglia m < n spesso risulta m = n - 1
3
maggio 2003ASD - eliminare la ricorsione3 1 2 3 4 56 7 analizziamo un algoritmo ricorsivo void treePreorder(root) { if(root == null) return; r = root.firstChild while (r != null) { treePreorder(r); r = r.nextSibling; } a bcd gfe
4
maggio 2003ASD - eliminare la ricorsione4 analisi esecuzione a bcd gfe void treePreorder(root) { if(root == null) return; r = root.firstChild while (r != null) { treePreorder(r); r = r.nextSibling; } root = a r = b root = b r = e root = e r = null root = a r = b root = a r = c root = a r = c root = a r = c root = a r = d root = a r = null root = b r = null root = c r = f root = f r = null root = c r = g root = g r = null root = c r = null root = d r = null
5
maggio 2003ASD - eliminare la ricorsione5 gestione esplicita della pila void iterativeTreePreorder(root) { if(root == null) return; pila.push(root); while(!pila.isEmpty()) { v = pila.pop(); if(v.nextSibling != null) pila.push(v.nextSibling); if(v.firstChild != null) pila.push(v.firstChild); }
6
maggio 2003ASD - eliminare la ricorsione6 esecuzione iterativa void iterativeTreePreorder(root) { if(root == null) return; pila.push(root); while(!pila.isEmpty()) { v = pila.pop(); if(v.nextSibling != null) pila.push(v.nextSibling); if(v.firstChild != null) pila.push(v.firstChild); } a bcd gfe ab ecec fdfd c gdgd d stato pila inizio corpo while
7
maggio 2003ASD - eliminare la ricorsione7 ricorsione vs. iterazione vantaggi ricorsione intuitiva ed elegante semplifica la costruzione di algoritmi vantaggi iterazione non ci sono "costi nascosti" pila gestita esplicitamente, più efficientemente rispetto alla pila dei record di attivazione del supporto runtime
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.