mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-12-01 00:41:09 +00:00
35 lines
813 B
Python
35 lines
813 B
Python
|
#Factorial of a number using memoization
|
||
|
result=[-1]*10
|
||
|
result[0]=result[1]=1
|
||
|
def factorial(num):
|
||
|
"""
|
||
|
>>> factorial(7)
|
||
|
5040
|
||
|
>>> factorial(-1)
|
||
|
'Number should not be negative.'
|
||
|
>>> [factorial(i) for i in range(5)]
|
||
|
[1, 1, 2, 6, 24]
|
||
|
"""
|
||
|
|
||
|
if num<0:
|
||
|
return "Number should not be negative."
|
||
|
if result[num]!=-1:
|
||
|
return result[num]
|
||
|
else:
|
||
|
result[num]=num*factorial(num-1)
|
||
|
#uncomment the following to see how recalculations are avoided
|
||
|
#print(result)
|
||
|
return result[num]
|
||
|
|
||
|
#factorial of num
|
||
|
#uncomment the following to see how recalculations are avoided
|
||
|
##result=[-1]*10
|
||
|
##result[0]=result[1]=1
|
||
|
##print(factorial(5))
|
||
|
# print(factorial(3))
|
||
|
# print(factorial(7))
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
import doctest
|
||
|
doctest.testmod()
|