use strict; use warnings; use Math::BigInt; no warnings 'recursion'; my $iter = 0; my ($c, $d) = @ARGV; print "ackermann ( $c, $d) = ", acker($c, $d), "\n"; sub acker { my ($i, $j) = @_; $iter++; print "Iteration $iter: i = $i, j = $j \n"; return if $iter >= 40; return 2**$j if $i <= 1; return acker( $i-1, 2) if $j <= 1; return acker ($i - 1, acker ($i, $j - 1)); }