列表python列表的递归max函数

时间:2016-02-21 18:39:40

标签: python recursion

我正在尝试编写一个递归函数,以便在列表列表中找到最大整数。我知道如何编写一个用于整数列表的函数。谁能给我一些提示呢?我 我正在考虑没有Max功能。 恩。 a = [1,[2,3],4,[[2],1]] find_max(a) - > 4

2 个答案:

答案 0 :(得分:1)

我决定用纯粹的递归解决这个问题,没有循环。以下似乎对我有用:

def find_max(a_list):
    l = len(a_list)
    if l > 1:   # if there are multiple elements...
        l /= 2      # find the midpoint
        m1 = find_max(a_list[:l])   # find the max in the first half
        m2 = find_max(a_list[l:])   # find the max in the second half
        if m1 > m2:         # pick between them
            return m1
        else:
            return m2
    elif l < 1: # deal with empty lists
        return None
    else:       # we're down to one element...
        if isinstance(a_list[0], list):     # ...but it may be a list
            return find_max(a_list[0])      # if so, find its max
        else:
            return a_list[0]   # otherwise, a single element is trivially the max of its subset

请注意,通过将子问题分成两半而不是减少1,即使使用大型列表,此实现也应该能够抵御堆栈溢出。

现在修改为处理空列表。

答案 1 :(得分:0)

如果数据类型是列表,您可以遍历列表并调用allowedHttpHeaders=["Accept"] 函数:

MAX()