Ackermann Function
!Program for Ackermann Function A (m, n)
!=============================================================
implicit none
integer :: a, m, n
! write (*,*) ' Please enter "m" '
! read (*,*) m
! write (*,*) ' Please enter "n" '
! read (*,*) n
do m = 1, 3
do n = 1, 11
call ackermann (a, m, n)
! write (*,*) 'The value of the Ackermann function A (m, n) is'
write (*,*) m, n, a
enddo
enddo
contains
!=============================recursive subroutine ackermann====================
recursive subroutine ackermann (b, m, n)
implicit none
integer, intent (in) :: m, n
integer, intent (out) :: b
if (m==0) then
b = n+1
else if (m>0.and.n==0) then
call ackermann (b, m-1, 1)
else
call ackermann (b, m, n-1)
call ackermann (b, m-1, b)
endif
end subroutine ackermann
!===============================================================
end