17 lines
413 B
Python
17 lines
413 B
Python
def validate_decorator(func):
|
|
def wrapper(number):
|
|
if not isinstance(number, int) or number < 0:
|
|
raise ValueError("Input must be a non-negative integer")
|
|
return func(number)
|
|
return wrapper
|
|
|
|
@validate_decorator
|
|
def factorial(n):
|
|
if n == 0:
|
|
return 1
|
|
else:
|
|
return n * factorial(n - 1)
|
|
|
|
# Usage
|
|
print(factorial(2))
|
|
# factorial(-1) # This will raise an error |