#!perl use strict; use warnings; use bigint; my $value; my $m; my $n; if($#ARGV >= 1){ $m = shift(@ARGV); $n = shift(@ARGV); } elsif($#ARGV == 0){ $m = shift(@ARGV); $n = 0; } else{ $m = 0; $n = 0; } $value = ackermann($m, $n); print "ackermann( $m, $n ) is $value\n"; sub ackermann { (my $m, my $n) = @_; if($m == 0){ return $n+1; } elsif($m > 0 and $n == 0) { return ackermann($m - 1, 1); } elsif($m > 00 && $n > 0){ return ackermann($m-1, ackermann($m, $n-1)); } }