class Cache:
def __init__(self):
# cache of salf.fatorial()
self.c_fatorial = {}
def fatorial(self, x):
result = 0
# first, verify in cache
if x in self.c_fatorial.keys():
return self.c_fatorial[x]
# if not in cach, process
if x <= 1:
result = 1
else:
result = x * self.fatorial(x - 1)
self.c_fatorial[x] = result # put the result in cache
return result