看板 Fortran 關於我們 聯絡資訊
program factor real n read(*,*) n res=n*factorial(n-1) write(*,*)'n=>',res end function factorial(n) integer n,res if (n .le. 1) then res=1 else res=n*factorial(n-1) end if return end 希望可以請教一下 我是在學校的SERVER執行程式的 學校是用連線到LINUX作業系統 一直我都是用g77就可以執行了 可是這次教函數 用g77一直有錯 課本上是教 要用FL 可是LINUX沒有這個指令 不知道 是我程式有打錯 還是指令要用LINUX上的 可以請高手幫我解惑一下嗎 我去圖書館翻書都很舊 好像沒啥說明(而且FORTRAN書很少 囧) 要是很簡單可以上網找 可以請高手 給我一下關鍵字嗎?? 謝謝幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.140.40
meteorology:你的函數在主程式沒有做宣告~ 12/03 21:48
bluehaerts:請問 主程式 要怎麼宣告 我上面那個有錯嗎 12/03 23:02
meteorology:real, external:: factorial 12/04 00:02
meteorology:SORRY real 要改成integer 12/04 00:03
bluehaerts:real external function factorial(n) 12/04 00:59
bluehaerts:這樣嗎 12/04 00:59
agody:跟函數在主程式沒有做宣告 "一點關係也沒有" 12/04 02:11
agody:你函數裡面寫的亂七八糟的,你講一下程式的目的,我再幫你改 12/04 02:14
noonee:恩恩...n!似乎這樣寫跑不出東西的... 12/04 02:17
noonee:你應該是漏了迴圈吧... 12/04 02:18
agody:其中一項是你沒在函數中寫factorial=? 所以回傳不了值 12/04 02:26
agody:最大的原因是Fortran不支援遞迴,所以你編譯過不了 12/04 02:43
agody:查到了,遞迴宣告 RECURSIVE 但要編譯器支援 12/04 02:59
bluehaerts:其實我這是抄課本上範例 完全一樣 所以不過我也覺得很 12/04 03:26