首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >递归地在混合类型的元组中找到最大值。

递归地在混合类型的元组中找到最大值。
EN

Stack Overflow用户
提问于 2017-07-28 11:12:27
回答 1查看 1.3K关注 0票数 2

我正在编写一个函数,它递归地在可能包含更多元组或列表的元组中找到最大值。当前的代码跟踪结果,但在每次递归调用完成后,子列表或子元组的最大值将被返回。

如何才能将其更改为只返回全局最大值?我尝试在每次递归调用结束时将这些值附加到列表中,但最后无法返回任何值。

当前使用示例数据返回4、6、10和20,希望在结束时只返回20。编辑:代码工作,将每个答案附加到列表“结果”中,并在末尾返回“结果”的最大值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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]])))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 11:28:47

下面是我为修复代码所做的工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45380825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文