use Memoize; memoize("Ack"); my $count = 0; sub Ack { $count++; return $_[0] ? ($_[1] ? Ack($_[0]-1, Ack($_[0], $_[1]-1)) : Ack($_[0]-1, 1)) : $_[1]+1; } my $NUM = $ARGV[0]; $NUM = 1 if ($NUM < 1); my $ack = Ack(3, $NUM); print "Ack(3,$NUM): $ack"; #print times; print "Ack() called $count times";