""" Week5-2 Notes """

def recursiveAddCards(cards):
    print("cards:", cards)
    if cards == [ ]:
        print("result:", 0)
        return 0
    else:
        smallerProblem = cards[1:]
        smallerResult = recursiveAddCards(smallerProblem)
        print("result:", cards[0] + smallerResult)
        return cards[0] + smallerResult

print("recursiveAddCards result:", recursiveAddCards([5,7,2,3]))

###

def factorial(x):
    print(x)
    if x == 1 or x == 0:
        return 1
    else:
        smallerProblem = x-1
        smallerResult = factorial(smallerProblem)
        return x * smallerResult

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

###

def countVowels(s):
    print(s)
    if s == "": # base case
        print(s, 0)
        return 0
    else: # recursive case
        smaller = countVowels(s[1:])
        if s[0] in "aeiouAEIOU":
            print(s, smaller+1)
            return smaller + 1
        else:
            print(s, smaller)
            return smaller

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