def factorial(n):
    # Base cases
    if n == 0 or n == 1:
        return 1

    # Recursive case
    return n * factorial(n-1)
