Keyword: Specifies that a subroutine or function can call itself directly or indirectly. Recursion is permitted if the keyword is specified in a FUNCTION or SUBROUTINE statement, or if RECURSIVE is specified as a compiler option or in an OPTIONS statement.
If a function is directly recursive and array valued, the keywords RECURSIVE and RESULT must both be specified in the FUNCTION statement.
The procedure interface is explicit within the subprogram in the following cases:
The keyword RECURSIVE must be specified if any of the following applies (directly or indirectly):
See Also
ENTRY, FUNCTION, SUBROUTINE, OPTIONS, Program Units and Procedures, recursive compiler option
Example
! RECURS.F90
!
i = 0
CALL Inc (i)
END
RECURSIVE SUBROUTINE Inc (i)
i = i + 1
CALL Out (i)
IF (i.LT.20) CALL Inc (i) ! This also works in OUT
END SUBROUTINE Inc
SUBROUTINE Out (i)
WRITE (*,*) i
END SUBROUTINE Out