python - 查找最大值的递归函数返回 0

标签 python arrays recursion

#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/

相关文章:

arrays - 索引 numpy 矩阵的最高值

Python - 如何将二叉树转换为 N 叉树并保持相同的信息

python - 用于测试的 MQTT 代理

python - 使用 Python 客户端处理 Google Pub Sub 串行任务

python - 从 python 中除 main 函数之外的某个地方调用 sys.argv 是不好的约定吗

c - 如何从指针获取信息

python - 对 x_i + x_k 的 k≠i 求和

c++ - 递归 count_files 函数不返回完整结果

javascript - 递归过滤 bool 键的数据

Python os.exec() : Termination on running 'notify-send'