""" Examples of Recursion """

def depth(obj):
    """ Return 0 if obj is not a list, or
    1 + maximum depth of an element in obj

    Assume obj has finite depth

    @type obj: list | Any

    >>> depth(5)
    0
    >>> depth([])
    1
    >>> depth([1, 2, 3])
    1
    >>> depth([1, [2, [3, 3, 3], 2]])
    3
    """
    if obj == []:
        return 1
    elif isinstance(obj, list):
        return 1 + max([depth(x) for x in obj])
    else:
        return 0

if __name__ == '__main__':
    import doctest
    doctest.testmod()

    # a non-finite list
    L = [1, 2, 3]
    L[1] = L
    print(L)
