- See: 竹内関数 - Wikipedia
tarai.pl
#!/usr/bin/env perl
use strict;
use warnings;
my $count = 0;
sub tarai {
my ( $x, $y, $z ) = @_;
$count++;
warn "$count: tarai($x, $y, $z)\n";
if ( $x <= $y ) {
return $y;
}
else {
return tarai(
tarai( $x - 1, $y, $z ),
tarai( $y - 1, $z, $x ),
tarai( $z - 1, $x, $y )
);
}
}
my @args = ( @ARGV >= 3 ) ? @ARGV : ( 10, 5, 0 );
print tarai(@args), "\n";