PROGRAM PROG_REC_FUN_SUM3
IMPLICIT NONE
INTEGER :: N
CHARACTER :: Flag
DO
PRINT *, "Enter a positive integer (N), greater than or equal to 3:"
READ *, N
PRINT *, "Sum= ", REC_FUN_SUM3(N), " by a recursive FUNCTION"
PRINT *, 'Continue? If not, press "n" or "N"; else press any other key.'
READ *, Flag
IF ((Flag=="n") .OR. (Flag=="N")) THEN
EXIT
END IF
END DO
CONTAINS
RECURSIVE
FUNCTION REC_FUN_SUM3(N) RESULT (MySum)
INTEGER,
INTENT(IN) :: N
INTEGER
:: MySum
IF
(N==3) THEN
MySum=3
ELSE
IF
(MOD(N,3)==0) THEN
MySum=N+REC_FUN_SUM3(N-3)
ELSE
MySum=REC_FUN_SUM3(N-1)
END
IF
END
IF
END FUNCTION REC_FUN_SUM3
END PROG_REC_FUN_SUM3