@slavatarasov

Почему возникает RunTime error при вызове рекурсии?

Приветствую, мучаю задачу второй день и не знаю с ней не так.
1 - 3 скрин условие задачи
4 - неправильные ответы
60d23a663799e351209326.jpeg60d23a7160b60456507325.jpeg60d23a7abafc3341567595.jpeg60d23a9581e46534750718.jpeg

Выдает ошибку RunTime error предположу, что дело в рекурси, но при этом по условию задачи замкнутого цикла возникать не должно( решаю с помощью графов)
all_classes = {}
for _ in range(int(input())):
    request = input().split()
    if len(request) == 1:
        if request[0] not in all_classes:
            all_classes[request[0]] = []
        else:
            all_classes[request[0]] += request[0]
    else:
        del request[1]
        if request[0] not in all_classes:
            all_classes[request[0]] = []
            for parent in request[1:]:
                all_classes[request[0]] += parent
        else:
            for parent in request[1:]:
                all_classes[request[0]] += parent
def parent_width_search(child):
    global count
    if request[0] in all_classes[child]:
        count += 1
        return
    else:
        for parent in all_classes[child]:
            parent_width_search(parent)
            if count >= 1:
                return
for _ in range(int(input())):
    count = 0
    request = input().split()
    if request[0] == request[1]:
        print('Yes')
    elif request[1] not in all_classes:
        print('No')
    else:
        parent_width_search(request[1])
        print('Yes' if count >= 1 else 'No')


проблема в функции parent_width_search, но в чем именно понять не могу, так как все обычные тесты проходит нормально

система наследования реализуется через словарь где:
{дочерний класс: [элементы родителей]}
Если же у выданного класса не указаны родители, то в словаре создается такая конструкция:
{введеный класс: []}

система поиска предка идет так:
1) проверяет есть ли искомый предок у дочернего класса, если есть, то увеличивает count на 1, это нужно для того, чтобы позже в программе print() вывел "Yes" если count увеличился хотя бы на 1 (то есть нашел хотя бы одного предка у дочернего класса)
2) Если нет то берет всех предков данного класса и через рекурсию прогоняет каждого
3) если вновь нашел, то увеличивает count на 1


проверял на таком тесте, проблем не было, также в условии сказано, что класс сам от себя явно или неявно наследоваться не может, так что не могу понять каким образом моя рекурсия вообще смогла зациклиться60d23a451281a781869575.jpeg, проблем не было, также в условии сказано, что класс сам от себя явно или неявно наследоваться не может, так что вряд ли из-за этого происходит зацикливание рекурсии
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@slavatarasov Автор вопроса
Вопрос закрыт. Оказывается при считывании запроса, я не учел, что при добавлении в список строки с помощью += строка добавляется побуквенно, а не полностью
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы