Intel® Fortran Compiler 17.0 Developer Guide and Reference
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:
When RECURSIVE is specified for a subroutine
When RECURSIVE and RESULT are specified for a function
The keyword RECURSIVE must be specified if any of the following applies (directly or indirectly):
The subprogram invokes itself.
The subprogram invokes a subprogram defined by an ENTRY statement in the same subprogram.
An ENTRY procedure in the same subprogram invokes one of the following:
Itself
Another ENTRY procedure in the same subprogram
The subprogram defined by the FUNCTION or SUBROUTINE statement
! 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