我正在编写一个函数,它递归地在可能包含更多元组或列表的元组中找到最大值。当前的代码跟踪结果,但在每次递归调用完成后,子列表或子元组的最大值将被返回。
如何才能将其更改为只返回全局最大值?我尝试在每次递归调用结束时将这些值附加到列表中,但最后无法返回任何值。
当前使用示例数据返回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]])))
发布于 2017-07-28 11:28:47
下面是我为修复代码所做的工作:
def maxInTuple(t):
result = 0
result = _max_val(t, result)
return result
def _max_val(t, highest):
for c in t:
if type(c) != int:
highest = _max_val(c, highest)
else:
if c > highest:
highest = c
return highest
print(maxInTuple(([2, 3, 4], (5,6),[10,[4,20]])))
我所做的:
让maxInTuple
函数返回它从_max_val
函数得到的结果。传递给_max_val
函数的第二个变量是0
。然后,在_max_val
函数中,如果它不是一个int
,我设置的最高值等于带有子集的_max_val
,因此,例如在[2,3,4]
中,它将生成highest = 4
。否则,如果c
是一个int
,那么我将测试c > highest
,这意味着只有当c
实际上更大时,最高值才会被更改。然后,一旦它完成循环,它将返回最高值,在本例中是20
,它将在maxInTuple()
函数中设置为result
,然后返回result
,然后是printed
。
https://stackoverflow.com/questions/45380825
复制相似问题