如何从列表中递归检索最大和最小值?

时间:2019-04-13 21:46:27

标签: python-3.x

我需要返回列表中具有最小和最大值的元组,但是我不能使用python的max()和min()函数。

我的函数必须是递归的

没有背景

def minmax(lista):

    if(len(lista) == 0):
        raise ValueError('Cannot find the maximum of an empty list.')

    if len(lista) == 1:
        return (lista[0], lista[0])
    else:
        maxValue = minmax(lista[1:])
        print(maxValue if maxValue > lista[0] else lista[0])

minmax([1,2,3])=(1,3) minmax([49,1,6,10])=(1,49)

1 个答案:

答案 0 :(得分:0)

此函数返回
1.如果lista为空或无,则为ValueError
2.如果list是一个元素,则为元组(lista [0],lista [0])
3.在所有其他情况下的(最小,最大)元组

def minmax(lista, min_value=None, max_value=None):
    if lista is None or len(lista) == 0:
        raise ValueError('Cannot find the maximum of an empty list.')

    check_value = lista[0]
    if min_value is None:
        min_value = check_value
    elif check_value < min_value:
        min_value = check_value

    if max_value is None:
        max_value = check_value
    elif check_value > max_value:
        max_value = check_value

    if len(lista) == 1:
        return min_value, max_value
    else:
        return minmax(lista[1:], min_value, max_value)