Python中的递归:超过最大深度

时间:2019-08-17 22:42:25

标签: python recursion

我很困惑如何在python中进行递归,何时返回以及何时更新全局变量。

考虑以下问题:https://leetcode.com/problems/nested-list-weight-sum-ii/

  

给出一个嵌套的整数列表,返回整数中的所有整数之和   列表按其深度加权,其中叶级别整数具有   权重为1,而根级整数的权重最大。

Input: [[1,1],2,[1,1]]

这是我的解决方法:

class Solution:

    def depthSumInverse(self, nestedList: List[NestedInteger]) -> int:

        md = 0

        def maxdepth(nestedList, m):

            for i in nestedList:

                 if i.isInteger() == False:
                     md = max (m + 1, md)
                     maxdepth(nestedList, m+1)

            return md


        def depthSum(nestedList, maxdepth):

            s = 0

            for i in nestedList:
                t = i.isInteger()
                if t:
                    s += i.getInteger() * maxdepth
                else:
                    s += depthSum(i.getList(), maxdepth-1)

            return s

        m = maxdepth(nestedList, 1)

        return depthSum(nestedList, m)

递归错误:超过最大递归深度。

在此处更新md时如何递归?

1 个答案:

答案 0 :(得分:1)

有一件事,我会在本部分的最后一行说

    def maxdepth(nestedList, m):

        for i in nestedList:

             if i.isInteger() == False:
                 md = max (m + 1, md)
                 maxdepth(nestedList, m+1)

您可能想做

                 maxdepth(i, m+1)

相反,否则您将连续在原始输入列表上调用maxDepth,而无需实际遍历嵌套列表的层次结构。

相关问题