mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 23:11:09 +00:00
f195d9251c
* adding factorial * adding doctest * Update factorial.py
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()
|