作者bluehaerts (5858笨58)
看板Fortran
標題[問題] linux上的指令
時間Wed Dec 3 19:36:50 2008
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
1F:推 meteorology:你的函數在主程式沒有做宣告~ 12/03 21:48
2F:→ bluehaerts:請問 主程式 要怎麼宣告 我上面那個有錯嗎 12/03 23:02
3F:推 meteorology:real, external:: factorial 12/04 00:02
4F:→ meteorology:SORRY real 要改成integer 12/04 00:03
5F:→ bluehaerts:real external function factorial(n) 12/04 00:59
6F:→ bluehaerts:這樣嗎 12/04 00:59
7F:推 agody:跟函數在主程式沒有做宣告 "一點關係也沒有" 12/04 02:11
8F:推 agody:你函數裡面寫的亂七八糟的,你講一下程式的目的,我再幫你改 12/04 02:14
9F:→ noonee:恩恩...n!似乎這樣寫跑不出東西的... 12/04 02:17
10F:→ noonee:你應該是漏了迴圈吧... 12/04 02:18
11F:推 agody:其中一項是你沒在函數中寫factorial=? 所以回傳不了值 12/04 02:26
12F:推 agody:最大的原因是Fortran不支援遞迴,所以你編譯過不了 12/04 02:43
13F:推 agody:查到了,遞迴宣告 RECURSIVE 但要編譯器支援 12/04 02:59
14F:→ bluehaerts:其實我這是抄課本上範例 完全一樣 所以不過我也覺得很 12/04 03:26