def flatten(*args):
    """Recursively flattens a list containing other lists or
    single items into a list.
    
    Examples::

        >>> flatten()
        []
        >>> flatten(2)
        [2]
        >>> flatten(2, 3, 4)
        [2, 3, 4]
        >>> flatten([2, 3, 4])
        [2, 3, 4]
        >>> flatten([[2, 3], [4, 5], 6, [7, 8]])
        [2, 3, 4, 5, 6, 7, 8]
    """
    if len(args) == 0:
        return []
    if len(args) > 1:
        return flatten(list(args))
    if hasattr(args[0], "__iter__") and not isinstance(args[0], str):
        return sum(list(map(flatten, args[0])), [])
    return list(args)