@pyblpovishaisa

Почему при изменении вложенности блока if пропадает ошибка maximum recursion depth exceeded in comparison?

При решении задачи столкнулся с вопросом.
60044a592ba00708147913.png

Почему в первом случае возникает ошибка, в то время как во втором её нет.

Python же проверяет сначала первое условие, если оно не выполняет и стоит and, то дальше он проверять не будет?
a = set()
def f(curr, step):
    if step == 8 and 1000<=curr<=1024: 
        a.add(curr)
    else:
        f(curr+1, step+1)
        f(curr+5, step+1)
        f(3*curr, step+1)

f(1,0)
print(len(a))


Хотя здесь ошибки нет.
a = set()
def f(curr, step):
    if step == 8:
        if 1000<=curr<=1024:
            a.add(curr)
    else:
        f(curr+1, step+1)
        f(curr+5, step+1)
        f(3*curr, step+1)

f(1,0)
print(len(a))
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы