def factorial(n, total = "#{n}")
n > 1 ? factorial(n - 1,
")".prepend(total)
.tap { |r|
(n - 1).downto(2) {
[" + ", total].each { |seq|
r.prepend(seq)
}
}
}.prepend("(")) : total
end
puts(f = factorial(6))
puts(eval(f))
ZGVmIGZhY3RvcmlhbChuLCB0b3RhbCA9ICIje259IikKICBuID4gMSA/IGZhY3RvcmlhbChuIC0gMSwKICAgICAgIikiLnByZXBlbmQodG90YWwpCiAgICAgICAgLnRhcCB7IHxyfCAKICAgICAgICAgIChuIC0gMSkuZG93bnRvKDIpIHsgCiAgICAgICAgICAgIFsiICsgIiwgdG90YWxdLmVhY2ggeyB8c2VxfAogICAgICAgICAgICAgIHIucHJlcGVuZChzZXEpIAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfS5wcmVwZW5kKCIoIikpIDogdG90YWwKZW5kCgpwdXRzKGYgPSBmYWN0b3JpYWwoNikpCnB1dHMoZXZhbChmKSk=