如何消除Python中的递归来解决运行时错误?

如何消除Python中的递归来解决运行时错误?,python,recursion,Python,Recursion,我使用递归代码运行代码,但出现以下错误: RuntimeError:调用Python对象时超出了最大递归深度 我的代码如下: def comp_ele(old, new): res = None if isinstance(old, dict): res = comp_dict(old, new) elif isinstance(old, list): res = comp_arr(old, new) else: p

我使用递归代码运行代码,但出现以下错误:

RuntimeError:调用Python对象时超出了最大递归深度

我的代码如下:

def comp_ele(old, new):
    res = None
    if isinstance(old, dict):
        res = comp_dict(old, new)
    elif isinstance(old, list):
        res = comp_arr(old, new)
    else:
        pass
    return res

def comp_arr(old_arr, new_arr):
    i = min(len(old_arr), len(new_arr))
    result = {u'a':{}, u'u':{}, u'r':{}}
    for index in xrange(i):
        res = comp_ele(old_arr[index], new_arr[index])
        if res is not None:
            result[u'u'][index] = res

    # ...

    return result

def comp_dict(old_obj, new_obj):
    # like comp_arr
    # ...
    result = {u'a':{}, u'u':{}, u'r':{}}
    #...
    result = comp_ele(old_obj[index], new_obj[index])
    #...
    return result
我已经使用了这个,但没有解决:

sys.setrecursionlimit(1500)


因此,我应该将
递归更新为
来解决运行时错误,但是我应该怎么做呢?使用
itertools

谢谢大家,我已经解决了这个问题。这个原因在一种情况下是无限循环。

你确定你的程序没有bug吗?它是否以较小的输入返回正确的答案?简短地解释您的代码应该是什么,或者通常是您拥有什么以及您想要实现什么?与问题无关,但您的字典中有一个重复的键,
{u'a':{},u'a':{},u'r':{}
。正在进行一些相互递归。你能构造一个测试用例来确保它会终止吗?@JulienBernu我输入一些简单的数据,如果一些嵌套是错误的,这是可以的。此代码是简单的代码,不是完整的代码。@paisanco好的,谢谢。