def factorial(x):
    print("Input:", x)
    if x == 1:
        print("Output:", 1)
        return 1
    else:
        smallerResult = factorial(x-1)
        print("Output:", x * smallerResult)
        return x * smallerResult

print("factorial:", factorial(5))

###

def countVowels(s):
    print("In:", s)
    if s == "":
        print("Out:", 0)
        return 0
    else:
        smallerString = s[1:]
        smallerResult = countVowels(smallerString)
        if s[0] in "aeiou":
            print("Out:", smallerResult + 1)
            return smallerResult + 1
        else:
            print("Out:", smallerResult)
            return smallerResult

print("countVowels:", countVowels("apple"))

###

def removeDuplicates(lst):
    if lst == []:
        return lst
    else:
        smallerList = lst[1:]
        smallerResult = removeDuplicates(smallerList)
        if lst[0] in smallerResult:
            return smallerResult
        else:
            return [ lst[0] ] + smallerResult
        
# [2, 1, 3, 4]
print("removeDuplicates:", removeDuplicates([1, 2, 1, 2, 3, 4, 3, 3]))