File tree Expand file tree Collapse file tree 2 files changed +24
-28
lines changed
Expand file tree Collapse file tree 2 files changed +24
-28
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,30 @@ def factorial(number: int) -> int:
3434 return value
3535
3636
37+ def factorial_recursive (n : int ) -> int :
38+ """
39+ Calculate the factorial of a positive integer
40+ https://en.wikipedia.org/wiki/Factorial
41+
42+ >>> import math
43+ >>> all(factorial(i) == math.factorial(i) for i in range(20))
44+ True
45+ >>> factorial(0.1)
46+ Traceback (most recent call last):
47+ ...
48+ ValueError: factorial() only accepts integral values
49+ >>> factorial(-1)
50+ Traceback (most recent call last):
51+ ...
52+ ValueError: factorial() not defined for negative values
53+ """
54+ if not isinstance (n , int ):
55+ raise ValueError ("factorial() only accepts integral values" )
56+ if n < 0 :
57+ raise ValueError ("factorial() not defined for negative values" )
58+ return 1 if n == 0 or n == 1 else n * factorial (n - 1 )
59+
60+
3761if __name__ == "__main__" :
3862 import doctest
3963
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments