@cachedeffactorial(n):
return n * factorial(n-1)if n else 1
>>> factorial(10)# no previously cached result, makes 11 recursive calls
3628800
>>> factorial(5)# no new calls, just returns the cached result
120
>>> factorial(12)# two new recursive calls, factorial(10) is cached
479001600