python - Python中的递归:超过最大深度
问题描述
我很困惑如何在 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 时如何进行递归?
解决方案
一方面,我想说在这部分的最后一行
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
原始输入列表,而实际上没有遍历嵌套列表的层次结构。
推荐阅读
- c++ - 我想打印一个html页面,我发送文件的url并且需要在没有QPrintDialog的情况下打印出来
- kotlin - Spring JDBC - 带有 Kotlin 的 BeanPropertyRowMapper
- python - Python:超出范围
- python-3.x - Keras Model hdf5 无法转换 Tflite
- python - Python 和 selenium:如何多次更改 Firefox 的配置文件
- python - 如何迭代查询集并附加到字符串
- reactjs - 为什么我的 React 组件进入无限循环?
- python - 使用字典查找列表列表的最大值和最小值
- django - 在heroku中部署django应用程序后TemplateDoesNotFound错误
- flutter - 当抖动中不存在图像时处理图像错误