使用以下代码,当变量a
和a1
等于2时,我希望递归子例程创建2个长度为4(maxdev = 4)的嵌套do循环。
我试图通过变量count
(count1
在子例程中)控制嵌套级别。但是,当子例程自己调用时,count1
第一次调用中不会保留 for 的值。我希望外部循环保留 1 的值,count1
第二个循环保留count1
2 的值,以反映嵌套级别。
我不确定如何指定程序以便实现这一点。相反,当创建内部循环的调用返回到外部循环时,外部循环中的值count1
已更改并反映了它在内部循环中的增量。
program fragarrays
implicit none
integer::gridres,maxdev,a,count
integer, allocatable:: x(:)
open(unit=1,file='D:/output11.txt',status='unknown')
gridres=2
maxdev=gridres*gridres
do a = 1,2
count=0
allocate(x(a))
call assigncell(a,maxdev,count,x)
deallocate(x)
end do
contains
recursive subroutine assigncell(a1,maxdev1,count1,x1)
integer:: a1,maxdev1,b
integer::count1
integer,dimension(a1):: x1
count1=count1+1
do b=1,maxdev1
x1(count1)=b
write (1,*)count1,x1(count1),b,a1
if(count1.lt.a1)then
call assigncell (a1,maxdev1,count1,x1)
end if
end do
end subroutine assigncell
end program fragarrays