我正在编写一个函数,以递归方式查找可能包含更多元组或列表的元组中的最大值。目前代码跟踪结果,但在每次递归调用完成后,返回子列表或子元组的最大值。
如何更改它以便仅返回全局最大值?我尝试在每次递归调用结束时将值附加到列表中,但最后不能返回任何值。
目前使用示例数据返回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]])))
答案 0 :(得分:1)
以下是我修复代码的方法:
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
1}}。否则如果int
是c > highest
,那么我测试了c
,这意味着只有当20
实际上更大时才会更改最高值。然后,一旦完成循环,它将返回最高值,在这种情况下result
,将在maxInTuple()
函数中设置为result
,然后{{1}返回,然后是printed
。