sub factorial { my ($n, $accumulator) = @_; $accumulator ||= 1; if ($n == 0) { return $accumulator; } return factorial($n - 1, $n * $accumulator); }