mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 05:21:09 +00:00
adding factorial (#930)
* adding factorial * adding doctest * Update factorial.py
This commit is contained in:
parent
7cdda931fd
commit
f195d9251c
34
dynamic_programming/factorial.py
Normal file
34
dynamic_programming/factorial.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
#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()
|
Loading…
Reference in New Issue
Block a user