程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python 超出递归深度限制

发布于2023-05-15 20:58     阅读(1118)     评论(0)     点赞(7)     收藏(0)


我正在尝试解决一个涉及我使用深度优先搜索的问题,我遇到了同样的错误,不仅仅是这个问题,还有我所有的特定于 python 的深度优先搜索实现问题,那就是RecursionError: maximum recursion depth exceeded in comparison.

下面的代码是一个尝试,用于解决需要我在 DAG 中找到最长周期的问题。我正在使用深度优先搜索和图形着色,我的逻辑有问题吗?

class Solution:
    def longestCycle(self, edges: List[int]) -> int:
        color = [0 for _ in range(len(edges))]
        graph = [[] for _ in range(len(edges))]

        for idx, val in enumerate(edges):
            if val != -1:
                graph[idx].append(val)

        def dfs(node: int, path: int) -> None:
            nonlocal max_cycle
            if color[node] == 1:
                max_cycle = max(max_cycle, path - last_seen[node])
                return False

            for neighbour in graph[node]:
                if color[neighbour] != 2:
                    last_seen[neighbour] = path + 1
                    if not dfs(neighbour, path + 1):
                        return False                    
            color[node] = 2
            return True

        max_cycle = 0
        last_seen = defaultdict(int)
        for i in range(len(edges)):
            if color[i] == 0:
                last_seen[i] = 1
                dfs(i, 1)
        return max_cycle

如何增加 python 中的递归限制和堆栈大小?我尝试了以下方法,但没有帮助:

import sys, threading

sys.setrecursionlimit(1 << 30)
threading.stack_size(1 << 27)

main_thread = threading.Thread(target=main)
main_thread.start()
main_thread.join()

解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1975313/901769522497de654821/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)