2007年1月28日 星期日

遞迴函數呼叫的範例

利用遞迴的方式來解決問題,是非常直接 方便 快速的
一種 解題方法。

遞迴的缺點是 :會增加電腦的負荷,
使程式變慢。

但是,目前的PC 已經足過快速,所以 大部分的時候,
鼓勵使用遞迴的方式來寫程式


[code]

! begin of main()
implicit none

integer no, f1, f2
real r1, r2
integer fs !for function 費氏數列

r2= (1.0 + sqrt(5.0))/2.0
print *, 'r2= ', r2
print *, '費氏數列的前後兩項的比值 會趨近於 黃金分割'
! -----------------------------------------------

! 以費氏數列 示範遞迴程式的寫作
do no=1, 35, 1
f1= fs(no+1)
f2= fs(no)
r1= float(f1)/float(f2)

print *, 'no= ', no, 'f1= ', f1, ', f2= ', f2, ', r1= ', r1
end do

end
! -----------------------------------------------

recursive integer function fs(no)
implicit none
integer no

if (no <= 1) then
fs= 1
return
else
fs= fs(no-1) + fs(no-2)
return
end if

end


[/code]

沒有留言: