lunedì 2 dicembre 2013

Le procedure ricorsive in ambiente Matlab

Le procedure ricorsive in ambiente Matlab
Le procedure ricorsive in ambiente Matlab
Una procedura ricorsiva rappresenta una costruzione artificiosa che ci consente di utilizzare una funzione in se stessa. Analizziamo dapprima un semplice esempio di funzione ricorsiva alfine di mettere in evidenza appunto il fatto che la funzione richiama se stessa:
 
 
function y=expo(n)

if n==0, y=1;
   else y=2*expo(n-1);
end


Analizziamo allora nel dettaglio la funzione che presenta una struttura ramificata. La condizione n == 0 è la base della ricorsione. Questo è l’unico modo che si ha per ottenere che il programma smetta di chiamare se stesso. 

La parte contenuta nel costrutto else rappresenta la ricorsione. C'è da notare che la chiamata expo (n-1) avviene all'interno della funzione che sta definendo expo (n). La parte essenziale di tutto il procedimento di ricorsione è appunto la chiamata a un valore inferiore, n-1, e tale chiamata continuerà fino a quando non si verificherà un valore di n pari a 0. 

Possiamo quindi affermare che una procedura di ricorsione che abbia successo chiamerà sempre un valore inferiore.Ci sono molti pericoli connessi all'utilizzo di un algoritmo di ricorsione. Ad esempio così come accade con i cicli while, è possibile per la funzione di chiamare se stessa all'infinito in modo da non fornire mai una risposta. Un'altro problema che può nascere dal suo utilizzo è legato al fatto che la ricorsione può causare calcoli ridondanti che, anche se possono essere conclusi, possono richiedere molto tempo. Infine  mentre un programma ricorsivo è in esecuzione ha bisogno di spazio in più per accogliere l’overhead della ricorsione. 


Nessun commento:

Posta un commento