def product_of_list(l):
    """
    Recursively returns the product of all numbers in a list
    @param {list} list of numbers
    @return {number} product of all numbers in list
    """
    # define an inner function
    def inner(l):
        if l == []:
            return 1
        return l.pop() * inner(l)

    # if empty list, return 0, do NOT call inner
    if l == []:
        return 0

    # call inner
    return inner(l)