簡體   English   中英

Python中的遞歸:超過最大深度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM