如何消除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好的,谢谢。