def factorial(i):
if not hasattr(factorial, 'lstFactorial'):
factorial.lstFactorial = [None] * 1000
if factorial.lstFactorial[i] is None:
iProduct = 1
for iFactor in xrange(1, i+1):
iProduct *= iFactor
factorial.lstFactorial[i] = iProduct
return factorial.lstFactorial[i]
Honestly, this is not the best algorithm, since it uses the cache only partially.
Simple, user-friendly factorial function (no caching):
def factorial(i):
if i == 0 or i == 1:
return 1
return i*factorial(i-1)
For lazy python programmers most similar to C # example:
f = lambda i: i and i*f(i-1) or 1
source
share