【发布时间】:2017-07-28 19:12:27
【问题描述】:
我正在编写一个函数,它递归地在可能包含更多元组或列表的元组中找到最大值。目前代码跟踪结果,但每次递归调用完成后,返回子列表或子元组的最大值。
如何更改它以便只返回全局最大值?我尝试在每次递归调用结束时将值附加到列表中,但最后无法返回任何值。
目前使用样本数据返回 4、6、10 和 20,希望最后只返回 20。 编辑:代码有效,将每个答案附加到列表“结果”并在最后返回“结果”的最大值。
def maxInTuple(t):
results=[]
maxVal =0
_max_val(t, maxVal, results)
return max(results)
def _max_val(t, maxVal, results):
for c in t:
if type(c) != int:
_max_val(c, maxVal, results)
elif c > result
result =c
results.append(ans)
#return ans
print ( maxInTuple(([2, 3, 4], (5, 6), [10, [4, 20]])))
【问题讨论】:
-
为什么
_max_val不使用result参数,而是覆盖它? -
@Professor_Joykill,最初我在 helper 函数中设置了 result =0,但每次递归调用时它都会重置为 0。我一开始只希望它为0,我的逻辑有意义吗?
-
如果你想使用
.append(),一种可能的方法是使用return(max(results)),这将返回results列表中的最大值,这将是整个元组中的最大值。跨度> -
很高兴您提供代码示例,但请确保它运行。
-
@Professor_Joykill 我做了追加工作,谢谢