MODULE funzioni CONTAINS RECURSIVE FUNCTION fact(n) RESULT(f) IMPLICIT NONE INTEGER, INTENT(IN) :: n INTEGER :: f IF (n==1) THEN f = 1 ELSE f = risul(n) END IF END FUNCTION fact RECURSIVE FUNCTION risul(n) RESULT(r) IMPLICIT NONE INTEGER, INTENT(IN) :: n INTEGER :: r r = n*fact(n-1) END FUNCTION risul END MODULE funzioni PROGRAM fattoriale USE funzioni IMPLICIT NONE INTEGER :: n READ*,n PRINT*," Il fattoriale di ",n," e' ",fact(n) STOP END PROGRAM fattoriale