Остановка рекурсивной функции в Python

#python

#python

Вопрос:

Программа должна выглядеть следующим образом: выяснить, подключены ли два пользователя (прямо или косвенно), и указать путь, по которому подключены два пользователя, используя рекурсию. Проблема возникает в строке return True , поскольку рекурсия не прерывается, а просто продолжается, как если бы оператор if не был true .

 def trace(info, first, second):
    for a, b in info:
        if a == first:
            print(a, b)
            if b == second:
                return True
            else:
                trace(info, b, second)
    return False
    


info = [('zayn', 'anna'), ('jake', 'maria'), ('pete', 'anna'), ('travis', 'hannah'), ('maria', 'sara'), ('anna', 'mark'), ('sara', 'zayn'), ('sara', 'pete'), ('sara', 'mark')]

trace(info, 'jake', 'mark')
  

Комментарии:

1. Я думаю, вы пропустили строку кода

2. Вам не хватает оператора return из рекурсивного вызова else: return trance(info, b, second)

Ответ №1:

Вам не хватает return инструкции из рекурсивного вызова:

 def trace(info, first, second):
    for a, b in info:
        if a == first:
            print(a, b)
            if b == second:
                return True
            else:
                return trace(info, b, second)
    return False
  

Игровая площадка