@@ -34,35 +34,35 @@ def factorial(number: int) -> int:
3434 value *= i
3535 return value
3636
37-
38- def factorial_recursive (n : int ) -> int :
37+ def factorial_recursive (number : int ) -> int :
3938 """
40- Calculate the factorial of a positive integer
41- https://en.wikipedia.org/wiki/Factorial
39+ Calculate the factorial of a number using recursion.
4240
4341 >>> import math
44- >>> all(factorial (i) == math.factorial(i) for i in range(20 ))
42+ >>> all(factorial_recursive (i) == math.factorial(i) for i in range(10 ))
4543 True
46- >>> factorial(0.1 )
47- Traceback (most recent call last):
48- ...
49- ValueError: factorial() only accepts integral values
50- >>> factorial (-1)
44+ >>> factorial_recursive(0 )
45+ 1
46+ >>> factorial_recursive(5)
47+ 120
48+ >>> factorial_recursive (-1)
5149 Traceback (most recent call last):
5250 ...
53- ValueError: factorial () not defined for negative values
51+ ValueError: factorial_recursive () not defined for negative values
5452 """
55- if not isinstance (n , int ):
56- raise ValueError ("factorial() only accepts integral values" )
57- if n < 0 :
58- raise ValueError ("factorial() not defined for negative values" )
59- return 1 if n in {0 , 1 } else n * factorial_recursive (n - 1 )
53+ if number != int (number ):
54+ raise ValueError (
55+ "factorial_recursive() only accepts integral values"
56+ )
57+ if number < 0 :
58+ raise ValueError (
59+ "factorial_recursive() not defined for negative values"
60+ )
61+ if number in (0 , 1 ):
62+ return 1
63+ return number * factorial_recursive (number - 1 )
6064
6165
6266if __name__ == "__main__" :
6367 import doctest
64-
6568 doctest .testmod ()
66-
67- n = int (input ("Enter a positive integer: " ).strip () or 0 )
68- print (f"factorial{ n } is { factorial (n )} " )
0 commit comments