簡體   English   中英

如何在Python中消除遞歸以解決RuntimeError?

[英]How eliminate recursion in Python to solve RuntimeError?

我使用遞歸代碼運行代碼,但出現以下錯誤:

RuntimeError: maximum recursion depth exceeded while calling a Python object

我的代碼是這樣的:

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)

因此,我應該將recursion更新為while以解決運行時錯誤,但是我應該怎么做? 使用itertools嗎?

謝謝大家,我已經解決了問題。 在一種情況下,此原因是無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM