提问者:小点点

超过python最大递归深度


我想制作一个返回调用者的程序

def searchformethod(methodcalls,method):
    for call in methodcalls:
        if method in call[4]:
           calll=call[0],call[2]
           callerncallee.methodcaller.append(calll)
           callerncallee.searchformethod(methodcalls,call[2])

方法调用中的每个调用都包含("class",".","caller",".","callee")
我需要一个递归来获取每个方法,它在小项目中工作得很好,但在大项目中我得到了这个

 callerncallee.searchformethod(methodcalls,call[2])
 [Previous line repeated 989 more times]
 RecursionError: maximum recursion depth exceeded

共1个答案

匿名用户

Python对尾递归没有优化,这意味着对于每一个递归步骤,堆栈都会增加,直到达到极限。然后你会得到像你得到的那样的错误消息。

您必须将递归调用转换为while循环。