【问题标题】:Return from recursive function immediately when a solution is found找到解决方案后立即从递归函数返回
【发布时间】:2022-07-12 23:23:01
【问题描述】:
def wordBreak(self, s: str, wordDict: List[str]) -> bool:
        class solutionFound(Exception):
            pass
        
        def dfs(s):
            if len(s) == 0:
                raise solutionFound
            
            for i in range(len(wordDict)):
                if s.startswith(wordDict[i]):
                    dfs(s[len(wordDict[i]):])
        
        try:
            dfs(s)
            return False
        except solutionFound:
            return True

在上面的代码中,我在函数内部进行了很多递归调用,我只想在找到解决方案时立即返回。一种方法是使用异常,我只是想知道是否有另一种方法可以用最少的代码实现这一点。

【问题讨论】:

    标签: python recursion


    【解决方案1】:

    使用return:

    def wordBreak(self, s: str, wordDict: List[str]) -> bool:
        
        def dfs(s):
            if len(s) == 0:
                return
            
            for i in range(len(wordDict)):
                if s.startswith(wordDict[i]):
                    dfs(s[len(wordDict[i]):])
    

    【讨论】:

    • return 只返回调用堆栈上一级的控制。 OP 似乎想一直走到递归的顶端
    猜你喜欢
    • 2021-12-14
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多