递归Python函数,用于在列表中查找最小值

递归Python函数,用于在列表中查找最小值,python,recursion,Python,Recursion,作为练习,我尝试在Python中使用递归查找列表中的最小正数。这几乎是可行的,当它打印(第一次)时会找到2,但最后返回None。是否有办法修复此代码,或者我走错了方向 def find_lower(lst): “”“返回列表中最小的正数。”“” def最低(第一,其余): #基本情况 如果len(rest)==0: 打印(第一)#此行仅用于检查值 先返回 如果first>rest[0]或firstrest[0]或first

作为练习,我尝试在Python中使用递归查找列表中的最小正数。这几乎是可行的,当它打印(第一次)时会找到2,但最后返回
None
。是否有办法修复此代码,或者我走错了方向

def find_lower(lst):
“”“返回列表中最小的正数。”“”
def最低(第一,其余):
#基本情况
如果len(rest)==0:
打印(第一)#此行仅用于检查值
先返回
如果first>rest[0]或first<0:
最低(rest[0],rest[1:])
其他:
最低(第一,其余[1:])
返回最低值(lst[0],lst[1:])
a=[6,-4,4,8,-127,5,7,2,3,9]
打印(查找最低值(a))#不打印任何内容,但应打印最低值

编辑:这个问题与另一个问题不完全相同。寻找这种答案的人找不到另一个答案,因为它问的是一个类似的问题,但方式非常不同。堆栈溢出有有用的内容,但敌意和向下投票是令人讨厌的。

问题是您忘记在第二个
if
else
案例中添加
return
语句

以下方面应起作用:

def find_lowest(lst):
    """Return the lowest positive number in a list."""
    def lowest(first, rest):
        # Base case
        if len(rest) == 0:
            return first
        if first > rest[0] or first < 0:
            return lowest(rest[0], rest[1:])
        else:
            return lowest(first, rest[1:])
    return lowest(lst[0], lst[1:])

a = [6, -4, 4, 8, -127, 5, 7, 2, 3, 9]
def find_lower(lst):
“”“返回列表中最小的正数。”“”
def最低(第一,其余):
#基本情况
如果len(rest)==0:
先返回
如果first>rest[0]或first<0:
返回最低值(rest[0],rest[1:])
其他:
返回最低值(第一,其余[1:])
返回最低值(lst[0],lst[1:])
a=[6,-4,4,8,-127,5,7,2,3,9]

什么敌意?在我看来,副本基本上是一样的。许多人不会根据它的标题找到另一个答案。我没有,即使搜索了很多次。这是一个非常有用的资源,但使用起来非常令人沮丧。我想我花了三年的时间才写了一篇评论来帮助别人解决问题。它有点像维基百科——非常有用,但过于热情温和。像这样的网站是信息的长尾。用其他关键字搜索Google的人会找到另一篇文章,用这些关键字搜索的人会找到这篇文章。没有必要投否决票。这样就不会耗尽磁盘空间。