我正在尝试编写一个简单的递归函数,以便在不使用任何内置函数的情况下查找列表中的最大值,但“print”和“len”除外。我使用递归进行了一个简单的线性搜索,将列表中的每个成员与当前最大值进行比较
x=[1,2,3]
Max=x[-1]
def Max_list(Max, x, c=2):
if len(x)==1:
return Max
else:
if c==(len(x)+1):
print('hi')
return Max
elif x[len(x)-c]>Max:
Max=x[len(x)-c]
c+=1
Max_list(Max, x, c)
elif x[len(x)-c]<=Max:
c+=1
Max_list(Max, x, c)
print(Max_list(Max, x))
使我困惑的是,我的程序打印“hi”(这是一个验证,我的if条件得到满足),但没有返回任何结果。我可以让它尝试返回任何东西,但它仍然返回“无”。 我很想知道如何修复它,但是如果有人能给我一个解释,为什么我的代码在当前状态下总是不返回任何结果,那就太好了。你知道吗
正如其中一个用户在评论中指出的,您需要在对
Max_list(Max, x, c)
的两个调用中添加一个return
语句。为什么会这样?你知道吗在Python中,如果调用的函数没有return语句,则默认返回值为
None
。如果我们看看你的递归,它实际上是这样做的:在添加这些返回语句后,我们得到了以下内容:
正如user2357112所说,您必须明确地使用
return
。另外Patrick Gallagher也很好地说明了如何使用x[-1]
检索列表中的最后一个元素。你知道吗相关问题 更多 >
编程相关推荐