Version1:
Recursive version
def factorial(n):
if n == 0: return 0
if n == 1: return 1
if n > 2:
return n * factorial(n-1)
Memoization of factorial function:
mem= {}
def factorial(n):
if n == 0: return 0
if n == 1: return 1
if n > 2:
mem[n] = n * factorial( n-1)
return mem