Scorpion_MB
@Scorpion_MB
Изучаю Питон

Как избежать превышения количества рекурсий в питоне?

Есть задача типа этой:
def func()
    x = randint(1, 10)
    x = randint(1, 10)
    if x ==   and y==  :
        print(x, y)
    else:
        func()

Как избежать ситуации, когда количество рекурсий превысит допустимый предел, а условие для x и y так и не будет выполнено?
  • Вопрос задан
  • 273 просмотра
Решения вопроса 4
yupiter7575
@yupiter7575
Python программист
try except RecursionError
Ответ написан
@Alexa2007
sys.setrecursionlimit(1500)
Ответ написан
longclaps
@longclaps
Нахера тут (и в задачах типа этой) рекурсия? Функция вида
def foo(args):
    other_args = do_something()
    foo(other_args)
всегда приводится к виду
def foo(args):
    while condition:
        args = do_something()
В твоём случае эквивалентный код
def func():
    while True:
        x, y = randint(1, 10), randint(1, 10)
        if x == 1 and y == 1:
            print(x, y)

Подробнее о хвостовой рекурсии читай здесь

Рекурсия полезна в более замысловатых ситуациях, хотя бы такой:
def foo(args):
    other_args = do_something()
    foo(other_args)
    another_args = do_something_else()
    foo(another_args)
Ответ написан
Рекурсию стоит использовать только тогда, когда она точно что то упрощает. а её глубина - очень небольшая. В остальных случаях использование цикла while - более правильный вариант.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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