gpt4 book ai didi

python - 在列表中查找最大值时出现意外值 None - Python 3 递归

转载 作者:行者123 更新时间:2023-11-30 22:32:25 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的递归函数来查找列表中的最大值,而不使用任何内置函数,“print”和“len”除外。我使用递归进行了简单的线性搜索,将列表中的每个成员与当前的 Max 进行比较。

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 条件是否满足),但返回 None。我本可以让它尝试返回任何内容,但它仍然会返回“无”。我想知道如何显然地解决它,但如果有人能给我解释为什么我的代码在当前状态下总是返回 None,那就太好了。

最佳答案

正如一位用户在评论中指出的那样,您需要在对 Max_list(Max, x, c) 的两次调用中添加一个 return 语句。为什么会这样?

在 Python 中,如果调用的函数没有 return 语句,则默认返回值为 None。如果我们看看你的递归,它实际上在做的是:

    Initial Call:
Max_list(3, x, 3)
vvvvv
Max_list(3, x, 4)
vvvvv
print('hi')
return 3
return None
return None

添加这些 return 语句后,我们得到了以下内容:

    Initial Call:
Max_list(3, x, 3)
vvvvvv
Max_list(3, x, 4)
vvvvv
print('hi')
return 3
return the value of the above (3)
return the value of the above (3)

关于python - 在列表中查找最大值时出现意外值 None - Python 3 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45465940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com