[問題] linux上的指令

看板Fortran作者 (5858笨58)時間15年前 (2008/12/03 19:36), 編輯推噓7(707)
留言14則, 4人參與, 最新討論串1/5 (看更多)
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

12/03 21:48, , 1F
你的函數在主程式沒有做宣告~
12/03 21:48, 1F

12/03 23:02, , 2F
請問 主程式 要怎麼宣告 我上面那個有錯嗎
12/03 23:02, 2F

12/04 00:02, , 3F
real, external:: factorial
12/04 00:02, 3F

12/04 00:03, , 4F
SORRY real 要改成integer
12/04 00:03, 4F

12/04 00:59, , 5F
real external function factorial(n)
12/04 00:59, 5F

12/04 00:59, , 6F
這樣嗎
12/04 00:59, 6F

12/04 02:11, , 7F
跟函數在主程式沒有做宣告 "一點關係也沒有"
12/04 02:11, 7F

12/04 02:14, , 8F
你函數裡面寫的亂七八糟的,你講一下程式的目的,我再幫你改
12/04 02:14, 8F

12/04 02:17, , 9F
恩恩...n!似乎這樣寫跑不出東西的...
12/04 02:17, 9F

12/04 02:18, , 10F
你應該是漏了迴圈吧...
12/04 02:18, 10F

12/04 02:26, , 11F
其中一項是你沒在函數中寫factorial=? 所以回傳不了值
12/04 02:26, 11F

12/04 02:43, , 12F
最大的原因是Fortran不支援遞迴,所以你編譯過不了
12/04 02:43, 12F

12/04 02:59, , 13F
查到了,遞迴宣告 RECURSIVE 但要編譯器支援
12/04 02:59, 13F

12/04 03:26, , 14F
其實我這是抄課本上範例 完全一樣 所以不過我也覺得很
12/04 03:26, 14F
文章代碼(AID): #19DczJ86 (Fortran)
文章代碼(AID): #19DczJ86 (Fortran)