factorialRec(n) { if (n == 0) return 1; return n * factorialRec(n - 1); } factorialIter(n) { for (i in range(1, n)) n *= i; return n; } factorialFold(n) { return reduce(multiply, 1, range(1, n + 1)); }