Преобразовать рекурсивный Python в итеративный - RecursionError: максимальная глубина рекурсии превышена по сравнению - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующий рекурсивный метод для структуры данных Union-Find.Однако эта реализация дает мне ошибку рекурсии:

RecursionError: maximum recursion depth exceeded in comparison

Я не могу придумать, как преобразовать это в простой итеративный метод.Я плохо разбираюсь в рекурсивных функциях, и мне нужна помощь, чтобы найти выход из этой проблемы

def find(data, i):
    if i != data[i]:
        data[i] = find(data, data[i])
    return data[i]

def union(data, i, j):
    pi, pj = find(data, i), find(data, j)
    if pi != pj:
        data[pi] = pj

data = [i for i in range(15000)]
connections = [(1457,2978), (2453,9785), ....] # A huge list of tuples


for i, j in connections:
    union(data, i, j)
...