在用fortran运行时出现forrt1:severe<161>:Program Exception - array bounds exceeded是怎么回事啊?

这是我写的程序:programmainreal::xinteger::nprint*,'请输入legendre多项式的阶n='read*,nprint*,'请输入参数x=... 这是我写的程序:
program main
real::x
integer::n
print*,'请输入legendre多项式的阶n='
read*,n
print*,'请输入参数x='
read*,x
call my(n,x)
end

subroutine my(n,x)
dimension p(0:n)
if(x==1) then
do i=1,n
p(i)=x**i
enddo
print*,p(i)
else
p(0)=1.0
p(1)=x
do i=2,n
p(i)=(2.0-1.0/dble(i))*x*p(i-1)-(1.0-1.0/dble(i))*p(i-2)
enddo
print*,p(i)
endif
end
展开
 我来答
flydog0519
2012-04-16
知道答主
回答量:19
采纳率:0%
帮助的人:10.2万
展开全部
问题出在这:
print*,p(i)

假如n是5
上面的循环后
do i=2,n
p(i)=(2.0-1.0/dble(i))*x*p(i-1)-(1.0-1.0/dble(i))*p(i-2)
enddo

i为6
超过P的范围n =5.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式