主题:请大家帮忙找一小段程序中的bug
下面是彭国伦书中讲递归的一段代码(P195),兴趣来时,自己敲了一下试一试,发现注释掉框框中的部分之后再次编译运行会出现“段错误”的错误,而加上那一段(书中加上了)就能够正常运行。我当时只是认为那一段用途不大,懒得敲,所以就出现了这样奇怪的结果。还请前辈们指点一下,这是哪里的问题?谢谢了,已上传附件。
————————————————————————————————————————————————————————————————————————————————————————————
program ex
implicit none
integer::n
integer,external::fact
write(*,*)'N='
read(*,*)n
write(*,"(I2,'!=',I8)")n,fact(n)
stop
end
recursive integer function fact(n)result(ans)
implicit none
integer,intent(in)::n
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! if(n<0)then !
! ans=-1 !
! return !
! else if(n<=1)then !
! ans=1 !
! return !
! end if !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ans=n*fact(n-1)
return
end
————————————————————————————————————————————————————————————————————————————————————————————
program ex
implicit none
integer::n
integer,external::fact
write(*,*)'N='
read(*,*)n
write(*,"(I2,'!=',I8)")n,fact(n)
stop
end
recursive integer function fact(n)result(ans)
implicit none
integer,intent(in)::n
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! if(n<0)then !
! ans=-1 !
! return !
! else if(n<=1)then !
! ans=1 !
! return !
! end if !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ans=n*fact(n-1)
return
end