![]() |
| Le procedure ricorsive nel Fortran |
RECURSIVE FUNCTION factorial(n) RESULT(res) INTEGER res, n IF(n.EQ.1) THEN res = 1 ELSE res = n*factorial(n-1) END IF END
Analizziamo allora nel dettaglio la funzione che presenta una struttura ramificata. La condizione n == 1 è 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 factorial(n-1) avviene all'interno
della funzione che sta definendo factorial(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.
- Il comando implicit none nel Fortran
- Struttura di un programma Fortran
- Caratteristiche fondamentali del fortran
- Come compilare un programma fortran





