Discuss / Python / 几种方式求最大最小值

几种方式求最大最小值

Topic source

Mr_RightMen

#1 Created at ... [Delete] [Delete and Lock User]

1.内置的min和max

def findMinAndMax(L):
    if len(L) == 0:
        return None,None
    mx = max(L)
    mn = min(L)
    return (mn,mx)

2.for循环的一种

def findMinAndMax(L):
    if len(L) == 0:
        return None,None
    if len(L) == 1:
        return L[0],L[0]
    L1 = []
    L2 = []
    s = range(len(L))
    for x in L:
        for i in s:
            if x < L[i]:
                L1.append(x)
            if x > L[i]:
                L2.append(x)
    return tuple(set(L1) ^ set(L2))

3.递归,这个琢磨了很久,不知道理解的对不对,希望老师能再多举点递归的例子

def findMinAndMax(L):

    if len(L) == 0:
        result = None,None
    elif len(L) == 1:
        result = L[0],L[0]
    # 边界条件
    elif len(L) == 2:
        if L[0] < L[1]:
            result = L[0], L[1]
        else:
            result = L[1], L[0]
    else:
        # 每次递归都会用L[0]和minimum,maximum进行比较得出一个result
        minimun, maximum = findMinAndMax(L[1:])
        print(minimun,maximum)
        if minimun > L[0]:
            result = L[0],maximum
        elif maximum < L[0]:
            result = minimun,L[0]
        else:
            result = minimun,maximum
    return result

s=[5,3,8,4,7]
print(findMinAndMax(s))

个人理解,不知道对不对

实现过程大致如下
5 和 findMinAndMax(3,8,4,7)里面得到的结果对比,但是要得出结果必须执行如下过程
3 和 findMinAndMax(8,4,7)里面得到的结果对比,但是要得出结果必须执行如下过程
8 和findMinAndMax(4,7)里面得到的结果对比,但是要得出结果必须执行如下过程
findMinAndMax(4,7)里面得到的结果是minimum=4,maximum=7
8和(4,7)对比得到的结果是minmum=4,maximum=8
3和(4,8)对比得到的结果是minimum=3,maximum=8
5和(3,8)对比得到的结果是minimum=3,maximum=8

  • 1

Reply