Что такое рекурсия?

1. Что такое рекурсия

  • Рекурсия — это когда функция вызывает сама себя для решения задачи.

  • Обычно задача делится на более простые подзадачи, пока не достигнем базового случая (условие выхода).


2. Структура рекурсивной функции

  1. Базовый случай — условие, при котором функция перестаёт вызывать сама себя.

  2. Рекурсивный случай — часть задачи, где функция вызывает саму себя с “упрощёнными” данными.

def factorial(n):
    if n == 0:        # базовый случай
        return 1
    return n * factorial(n-1)  # рекурсивный случай

print(factorial(5))  # 120

3. Пример с деревом/структурой данных

Рекурсия часто используется для обхода вложенных структур:

def print_nested_list(lst):
    for item in lst:
        if isinstance(item, list):
            print_nested_list(item)  # рекурсивный вызов
        else:
            print(item)

nested = [1, [2, 3], [4, [5, 6]]]
print_nested_list(nested)

Вывод:


4. Применение рекурсии в автоматизации тестирования

  • Обход DOM-дерева: поиск элементов в сложных вложенных структурах.

  • Обход вложенных JSON-ответов: поиск ключей/значений.

  • Рекурсивные генераторы данных: например, создание вложенных тестовых структур.


5. Важные моменты

  • Всегда нужен базовый случай, иначе будет бесконечная рекурсия → RecursionError.

  • В Python есть ограничение на глубину рекурсии (sys.getrecursionlimit(), обычно 1000).

Last updated

Was this helpful?