[英]Recursion in Python: Max Depth Exceeded
我很困惑如何在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
,而無需實際遍歷嵌套列表的層次結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.