PROGRAM kertoma IMPLICIT NONE INTEGER :: n DO WRITE (*,'(A)',ADVANCE='no') 'Anna n: ' READ (*,*) n WRITE (*,*) 'n = ', n IF (n < 0) EXIT WRITE (*,*) 'n! = ', kert(n) END DO CONTAINS RECURSIVE FUNCTION kert(n) RESULT(kert_arvo) IMPLICIT NONE INTEGER, INTENT(IN) :: n INTEGER :: kert_arvo IF (n == 0) THEN kert_arvo = 1 ELSE kert_arvo = n * kert(n-1) END IF END FUNCTION kert END PROGRAM kertoma