fortran 编程运行程序 出现段错误 求助 在线等

programbsrimplicitnonereal(kind=8),external::K1write(*,*)K1()endfunctionK1()implicitn... program bsr
implicit none
real(kind=8),external::K1

write(*,*)K1()
end
function K1()
implicit none
real(kind=8),external::I
real(kind=8),parameter::wqd=1e-2
real(kind=8)::u=0.593
real(kind=8)::K1
integer:: m=1
real(kind=8):: su,su1
su=-(log(u/2.0)+0.57722)*I(0)
do
su1=su
su=su1+(2.0/m)*I(m)
m=m+1
if(abs(su-su1)<=wqd) exit
enddo
K1=su
return
end function

function I(m)
implicit none
integer,external::fact
real(kind=8),parameter::wqd=1e-2
real(kind=8)::u=0.593
integer::m,k=0
real(kind=8)::sv1,sv=0
real(kind=8)::I
do
sv1=sv
sv=sv1+(((u/2.0)**(2.0*k+m))/(fact(k)*fact(k+m)))
k=k+1
if(abs(sv-sv1)<=wqd) exit
enddo
I=sv
return
end function

recursive integer function fact(k) result(ans)
implicit none

integer::k
if(k<=1) then
ans=1
else
ans=k*fact(k-1)
endif
return
end function
展开
 我来答
天河流纹石
2012-12-24 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4096万
展开全部
什么叫段错误??

这段代码在我的编译器上没有编译错误,没有链接错误,也没有运行时错误。

只不过由于算法原因,可能未收敛,循环一直无法中止。(具体算法我没有分析)
更多追问追答
追问
运行时,我等了很长时间出现段错误。这是第二类贝塞耳函数的程序 。函数K求得是第二类贝塞儿函数,函数I求得是第一类贝塞儿函数 函数fact 求得时阶乘   运行了好几次都是段错误。 我用gdb调试 ,出现在 52行 就是 ans=k*fact(k-1) k=2时 ,,,可是我把我的阶乘函数单写之后发现正确啊。
追答
integer 变量最多可以存储到 4294967296。

而 13 的阶乘就等于 6227020800,超出了 integer 的可表达范围。
qweerui
2012-12-24 · TA获得超过117个赞
知道答主
回答量:78
采纳率:0%
帮助的人:54.3万
展开全部
是不是I(m)=0恒成立??
你把错误报告发来…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式