3 ms·
> In almost every other language this code would look messy or use some terrible recursion. Nah, lots of other languages can do this. Python: def factori
by cakoose 7y ago
> In almost every other language this code would look messy or use some terrible recursion.
Nah, lots of other languages can do this.
Python:
def factorial(i):
return reduce(operator.mul, range(2, i+1), 1)
Ruby:
def factorial(i)
(2..i).reduce(1, :*)
end
Haskell:
factorial n = foldl (*) 1 [2..n]
- rnhmjoj 7y agoIn haskell you can also use the `product` function: factorial n = product [1..n]
- estomagordo 7y agoFor Python, we don't need to supply the optional initializer 1. And reduce resides in the functools namespace (much like mul is in operator). I assume we're not talking about that peculiar dialect of Python that is no longer supported a few months from now.
- messe 7y agoNot only that but in python 3.8, it can be written: def factorial(n): return math.prod(range(1,n+1))
- estomagordo 7y agoNice!
- cakoose 7y ago> For Python, we don't need to supply the optional initializer 1. Without the initializer, factorial(0) doesn't work.