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 7Danke im Voraus.