#find highest number
def HighValue(arr, HighestValue=0):
if len(arr) > 0:
arrayValue = arr.pop()
if len(arr) == 0:
return HighestValue
elif HighestValue <= arrayValue:
HighestValue = arrayValue
return HighValue(arr, HighestValue)
else:
return HighValue(arr, HighestValue)
print HighValue([1,2,3,4,5,6,7,8,9])
此函数使用递归返回数组的最大值。它有效,但我觉得我写的代码比必要的多。有没有人对我是否可以简化此递归算法有任何建议?我希望我可以在这里问这样的问题。如果没有,请告诉我。如果我从更有经验的程序员那里得到反馈,我觉得我会变得更好。
让我知道你的想法。
最佳答案
由于涉及到一些编程设计基础知识,我会回答这个问题而不是将其发回给 CodeReview。
是的,您编写的代码比需要的多。你不需要自己强制所有的机制。担心基本情况、递归步骤和返回值。从那里开始其他一切都应该很容易。
不要通过参数列表传递最佳值;只需传回您目前拥有的最佳值(value)即可。
不要从列表中删除内容;只需用列表的尾部调用例程。请注意,我的解决方案从开头而不是结尾删除了元素。欢迎你反驳这个逻辑。
如果列表只有一个元素长,则返回它。当您返回到父调用时,返回结束元素或返回值中的较高者:
def HighValue(arr):
best = 0
if len(arr) > 0:
best = HighestValue(arr[1:])
return best if best > arr[0] else arr[0]
如果您不担心执行时间,您可以通过额外的递归调用来省略 best。
关于python - 查找最大值的递归函数返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292207/