2
我正在写一个函数,它递归地在可能包含更多元组或列表的元组中查找最大值。目前代码跟踪结果,但在每次递归调用完成后,返回子列表或子元组的最大值。以递归方式查找混合类型元组中的最大值
如何更改它,以便只返回全局最大值?我尝试在每次递归调用结束时将值追加到列表中,但最后无法返回任何值。
当前使用示例数据返回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,最初我在助手函数中设置了result = 0,但随后每次递归调用时它都被重置为0。我只希望它在一开始就是0,我的逻辑是否有意义? – itsJana
如果您想使用'.append()',那么一种可能性就是做'return(max(results))',它将返回'results'列表中最大的值,这将是整个元组中最大的值。 –