一尘不染

python 3.2-使用递归查找列表中的第二个最小数字

python

因此,我需要使用递归在整数列表中找到第二个最小的数字,但是我一生都无法想出办法。我可以使用以下方法找到最小的数字:

def smallest(int_list):

    if(len(int_list) == 1):
        return int_list[0]
    else:
        a = smallest(int_list[1:])
        b = int_list[0]

        if(a <= b):
            return a
        else:
            return b

谁能指出我正确的方向?


阅读 203

收藏
2021-01-20

共1个答案

一尘不染

这是一个不使用min()或的简短实现sorted()。当列表中有重复值时,它也适用。

def ss(e):
    if len(e)==2 and e[0]<=e[1]:return e[1]
    return ss(e[:-1]) if e[0]<=e[-1]>=e[1] else ss([e[-1]]+e[:-1])

print("The selected value was:", ss([5, 4, 3, 2, 1]))
2021-01-20