P:\test\MJD>ack1 9
Ack(3,9): 4093
78.843 83.671 0 0
####
P:\test\MJD>timethis "c:javac ackermann.java && java ackermann 9"
TimeThis : Command Line : c:javac ackermann.java && java ackermann 9
TimeThis : Start Time : Fri Sep 02 22:01:28 2005
Ack(3,9): 4093
TimeThis : Command Line : c:javac ackermann.java && java ackermann 9
TimeThis : Start Time : Fri Sep 02 22:01:28 2005
TimeThis : End Time : Fri Sep 02 22:01:29 2005
TimeThis : Elapsed Time : 00:00:01.031
####
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";
####
P:\test\MJD>ack1 9
Ack(3,9): 4093
79.187 83.093 0 0
Ack() called 11,164,370 times
P:\test\MJD>ack2 9
Ack(3,9): 4093
0.046000
Ack() called 12,294 times