use strict; use warnings; my ($i, $j) = @ARGV; my $acker = ackermann($i, $j); print "A($i,$j) = $acker\n"; my $iter = 0; sub ackermann{ $iter ++; my $i = shift; my $j = shift; print "Iteration $iter: i = $i, j = $j \n"; return if $iter >= 40; if($i == 1){ undef $i; return 2**$j; } elsif($j==1){ undef $j; return ackermann($i-1,2); } else{ return ackermann($i-1, ackermann($i,$j-1)); } }