FORTRAN-Funktionen

Ich arbeite an einem Projekt, das einige numerische Methoden in FORTRAN implementieren muss. Dazu muss ich einige rekursive Funktionen schreiben. Hier ist mein Code.

!     
! File:   main.F95
!

RECURSIVE FUNCTION integrate(n) RESULT(rv)
    IMPLICIT NONE
    DOUBLE PRECISION :: rv
    INTEGER, INTENT(IN) :: n
    DOUBLE PRECISION, PARAMETER :: minusone = -1.0
    IF (n == 1) THEN
        rv = 10 !exp(minusone)
        RETURN
    ELSE
        rv = 1 - (n * integrate(n - 1))
        RETURN
    END IF
END FUNCTION integrate

RECURSIVE FUNCTION factorial(n) RESULT(res)
    INTEGER res, n
    IF (n .EQ. 0) THEN
        res = 1
    ELSE
        res = n * factorial(n - 1)
    END IF
END

PROGRAM main
    DOUBLE PRECISION :: rv1
    PRINT *, factorial(5)
    PRINT *, integrate(2)

    !READ *, rv1

END PROGRAM main

Für dieses Programm lautet die Ausgabe:

         NaN
       1

Wenn ich die Reihenfolge der Druckanweisungen ändere (Zeile 30 und 31), wird Folgendes ausgegeben:

         1
-19.000000

Die Ausgabe sollte (für die ursprüngliche Druckanweisungsreihenfolge) sein:

  120  
  -19 

Die Fakultätsfunktion habe ich der Wikipedia entnommenFortran 95-Sprachfunktionen Seite. Ich bin neu in FORTRAN, ich weiß nicht, was in meinem Code falsch ist. Bitte helfen Sie mir, Jungs.

Compiler: Gfortran 4.5.3 mit CygwinIDE: Netbeans 7.0.1Plattform: Windows 7

Danke im Voraus.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage