Questo sito utilizza cookie di terze parti per inviarti pubblicità in linea con le tue preferenze. Se vuoi saperne di più clicca QUI 
Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all'uso dei cookie. OK

Algoritmi ricorsivi e loro applicazioni in linguaggio C

Un algoritmo ricorsivo è un algoritmo che viene espresso in termini di sé stesso.
Tale tecnica risulta particolarmente utile per eseguire dei compiti ripetitivi su di un set di input variabili. La tecnica ricorsiva permette di scrivere algoritmi eleganti e sintetici per molti tipi di problemi comuni, anche se non sempre le soluzioni ricorsive sono le più efficienti. Questo è dovuto al fatto che comunemente la ricorsione viene implementata utilizzando le funzioni, e che l’invocazione di una funzione ha un costo rilevante, e questo rende più efficienti gli algoritmi iterativi.
E’ importante sottolineare che gli algoritmi ricorsivi utilizzano un semplice principio: il principio del divide et impera. Ecco la ricetta del divide et impera:
• dividere il problema in k sottoproblemi più semplici
• risolvere ogni sottoproblema separatamente
• ricombinare le soluzioni
L’algoritmo richiama se stesso generando una sequenza di chiamate che ha termine al verificarsi di una condizione particolare che viene chiamata condizione di terminazione (o anche condizione banale), che in genere si ha con particolari valori di input.
Esistono vari tipi di ricorsione:
1. Tipo di richiamo
• Mutua ricorsione: una funzione ne richiama un’altra che a sua volta richiama la prima.
• Ricorsione diretta: una funzione chiama se stessa fino al raggiungimento della condizione banale.
2. Numero di richiami
• Ricorsione lineare: si ha quando vi è solo una chiamata ricorsiva all’interno della funzione.
• Ricorsione non lineare: si ha nel caso in cui le chiamate ricorsive siano più di una.
3. Ricorsioni di Tail
• Tail Recursion: la chiamata ricorsiva è l’ultima istruzione eseguita nella funzione. E’ possibile trasformare questo algoritmo ricorsivo in uno iterativo, che di solito è più efficiente, in quanto non occorre mantenere lo stato della funzione una volta calcolata come è stato fatto nell’esempio
precedente.
• No Tail Recursion: la chiamata ricorsiva è eseguita in mezzo (o al più in testa) alla funzione. E’ il caso più conveniente, rispetto alla Tail Recursion, per effettuare una chiamata ricorsiva. [...]

Mostra/Nascondi contenuto.
Gilberto Lo Re, con lo stile L A T E X TOPtesi, Monografia di Laurea © 2012

Laurea liv.I

Facoltà: Ingegneria

Autore: Gilberto Lo Re Contatta »

Composta da 113 pagine.

 

Questa tesi ha raggiunto 1236 click dal 10/09/2012.

 

Consultata integralmente una volta.

Disponibile in PDF, la consultazione è esclusivamente in formato digitale.