我很困惑如何在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时如何递归?
答案 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
,而无需实际遍历嵌套列表的层次结构。