作者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