使用递归选择列表中的最小值

这是我为了使用递归查找列表中的最小值而定义的一个函数。但是,我在其内部调用了该函数两次,我认为这有点奇怪。有没有办法绕过这个功能append()?我们还没有研究它,所以我问是否有一种更简单的方法可以通过不使用来获得相同的解决方案append()?


def minimum(lst):

    """

    parameters : lst of type list

    return : the value of the smallest element in the lst

    """

    if len(lst) == 1:

        return lst[0]


    if lst[0] < lst[1]:

        lst.append(lst[0])

        return(minimum(lst[1:]))

    return(minimum(lst[1:])) 


HUX布斯
浏览 159回答 3
3回答

九州编程

使用额外的变量?def minimum(lst, current_min=None):&nbsp; &nbsp; if not lst:&nbsp; &nbsp; &nbsp; &nbsp; return current_min&nbsp; &nbsp; if current_min is None:&nbsp; &nbsp; &nbsp; &nbsp; current_min = lst[0]&nbsp; &nbsp; elif lst[0] < current_min:&nbsp; &nbsp; &nbsp; &nbsp; current_min = lst[0]&nbsp; &nbsp; return minimum(lst[1:], current_min)

弑天下

这是一个非常明确的版本,由于注释和变量名称,它应该易于阅读。def minimum(lst):&nbsp; &nbsp; # base case&nbsp; &nbsp; if len(lst) == 1:&nbsp; &nbsp; &nbsp; &nbsp; return lst[0]&nbsp; &nbsp; # get first element and minimum of remaining list&nbsp; &nbsp; first = lst[0]&nbsp; &nbsp; rest = lst[1:]&nbsp; &nbsp; min_of_rest = minimum(rest)&nbsp; &nbsp; # return the smaller one of those two values&nbsp; &nbsp; if first < min_of_rest:&nbsp; &nbsp; &nbsp; &nbsp; return first&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return min_of_rest
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python