#!/usr/bin/ruby
#
## https://rosettacode.org/wiki/Factorial
#
# Recursive
func factorial_recursive(n) {
n == 0 ? 1 : (n * __FUNC__(n-1));
};
# Iterative with Array#reduce
func factorial_reduce(n) {
1..n -> reduce('*');
};
# Iterative with Block#repeat
func factorial_iterative(n) {
var f = 1;
{|i| f *= i } * n;
return f;
};
# Built-in Number#factorial:
say 5!;