Tag Archives: funzioni ricorsive

Le procedure ricorsive in ambiente Matlab

MATLAB

Le procedure ricorsive in ambiente Matlab rappresentano una soluzione a diversi problemi che si incontrano nella pratica comune, nella sostanza una procedura ricorsiva non rappresenta altro che un programma che nella sua esecuzione chiama se stesso.

La Ricorsione è una costruzione subdola che permette di chiamare una funzione in se stessa. Ci sono molti pericoli usando la ricorsione. Il primo è che, come con i cicli while, è possibile per la funzione di chiamare se stesso per sempre e non fornire mai una risposta. La seconda è che la ricorsione può causare calcoli ridondanti che, anche se possono essere conclusi, possono richiedere molto tempo. Il terzo pericolo è che, mentre un programma ricorsivo è in esecuzione ha bisogno di spazio in più per accogliere l’overhead della ricorsione.

Ecco un semplice esempio di ricorsione:

function y=twoexp(n)

% y=twoexp(n). procedura ricorsiva per la valutazione di y=2^n.
% La procedura effettua una valutazione solo se n è maggiore di zero.

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

Il programma ha una struttura ramificata. La condizione n == 0 è la base della ricorsione. Questo è l’unico modo per ottenere che il programma smetta di chiamare se stesso. La parte contenuta in else è la ricorsione. Notate come il twoexp (n-1) si verifica proprio lì nel programma che sta definendo twoexp (n)! Il segreto è che è chiamata a un valore inferiore, n-1, e continuerà a farlo fino a quando non si mette n = 0. Una ricorsione di successo chiama sempre un valore inferiore.

matlab

L’uso della ricorsione può rendere più semplice la programmazione, il vantaggio consiste nel fatto che le funzioni ricorsive possono venire scritte tenendo conto della definizione ricorsiva stessa, per cui si ottengono facilmente dei programmi corretti senza dover simulare lo stato della memoria.

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.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: