sub factorial { my $n = shift; my $mult = @_ ? shift : 1; return $mult if $n < 2; return factorial($n - 1, $mult * $n); }