爲什麼我處於無限循環?調用函數時Fortran無限循環
PROGRAM tayls
USE kertoma
USE tforexp
IMPLICIT NONE
INTEGER :: n= 5
INTEGER :: i
REAL :: x
WRITE(*,*) "f1(x)= (e**x-1)/x"
DO i=1,10
x= 0.01*i
WRITE(*,*)x, (taylexp(x,n)-1)/x
END DO
END PROGRAM tayls
與
MODULE tforexp
USE kertoma
IMPLICIT NONE
CONTAINS
FUNCTION taylexp(x,ord)
REAL :: taylexp, x, sum
INTEGER :: ord, i
sum= 1.0
DO i=1,ord
sum= sum+ x**i/fact(i)
END DO
taylexp= sum
END FUNCTION taylexp
END MODULE tforexp
和
MODULE kertoma
IMPLICIT NONE
CONTAINS
FUNCTION fact(n)
INTEGER :: fact,n,y=1
DO WHILE (n>1)
y= y*n
n= n-1
END DO
fact = y
END FUNCTION fact
END MODULE kertoma
無限循環的第一次印刷 「F1(X)= ...」 之後立即開始。 所以我認爲這是第一次調用taylexp函數時發生無限循環,但我不明白爲什麼。 我認爲這與fortran使用公共變量有關,但我無法如何始終避免這種情況。 首先,我試圖調用沒有定義x的函數,只是使用「0.01 * i」,我想也許問題是這個函數使用了虛擬索引的相同名稱,但很明顯它並沒有解決問題。
我不知道這是否是問題,但請注意'integer:y = 1'可能[不會](http://stackoverflow.com/q/14565739/3157076)你認爲它是什麼。 – francescalus 2015-01-20 21:52:35
'taylerr'在哪裏使用?那麼爲什麼在後? – ja72 2015-01-25 00:15:51