
sub tak {
    my ($x, $y, $z) = @_;

    if ($y >= $x) {
	return $z;
    } else {
	return tak (tak ($x - 1, $y, $z),
		    tak ($y - 1, $z, $x),
		    tak ($z - 1, $x, $y));
    }
}

sub test_tak {
    return tak (18, 12, 6);
}

test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
test_tak();
