def reverseList(lst):
    if len(lst) == 1: # len(lst) == 0
        return lst
    else:
        smaller = reverseList(lst[1:])
        #return smaller + [ lst[0] ]
        smaller.append(lst[0])
        return smaller
        # reverseList([1, 2, 3]) -> [3, 2, 1]
            # reverseList([2, 3]) -> [3, 2]
        # [3, 2] + [1] -> [3, 2, 1]

def reverseList(lst):
    print("Call:", lst)
    if len(lst) == 0:
        print("Return:", [])
        return []
    else:
        smaller = reverseList(lst[1:])
        result = smaller + [ lst[0] ]
        print("Return:", result)
        return result

reverseList([3, 6, 9])

# Call : [3, 6, 9]
# Call: [6, 9]
# Call: [9]
# Call: []
# Return: []
# Return: [9]
# Return: [9, 6]
# Return: [9, 6, 3]