Рекурсивный подсчёт суммы элементов в вложенных списках

Рекурсивно суммируйте вложенные списки, а числовые листья добавляйте напрямую. Однако произвольная глубина ограничена стеком Python: для очень глубокой структуры нужен итеративный обход.

Короткий ответ

Что ответить на собеседовании

Рекурсивно суммируйте вложенные списки, а числовые листья добавляйте напрямую. Однако произвольная глубина ограничена стеком Python: для очень глубокой структуры нужен итеративный обход.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию f, которая суммирует все числовые значения, находящиеся в переданных списках, независимо от уровня их вложенности. Функция должна принимать произвольное количество списков‑аргументов и возвращать общую сумму всех найденных чисел.

Пример использования:

  • Ввод: f([10, 21, 33], [14, 52], [7, 81, [9, 100]]) Вывод: 327
  • Ввод: f([3, [5, 6], 15, [5, 51]], [7, 81, [9, 100]]) Вывод: 282
  • Ввод: f([3, [5, [10, 15, [5, 6], 6], 61, [5, 5], 8]]) Вывод: 129

Обратите внимание, что списки могут быть вложены произвольной глубины, а функция должна корректно обрабатывать любые комбинации вложенных и плоских списков.

Ответ

Рекурсивно суммируйте вложенные списки, а числовые листья добавляйте напрямую. Однако произвольная глубина ограничена стеком Python: для очень глубокой структуры нужен итеративный обход.

Короткая рекурсивная версия:

def f(*lists):
    def visit(value):
        if isinstance(value, list):
            return sum(visit(item) for item in value)
        return value
    return sum(visit(value) for value in lists)

Примеры дают 327, 282 и 129; пустой вход — 0. Предполагаются ациклические списки с числовыми листьями. Эта реализация линейна по размеру структуры, но при большой глубине получит RecursionError. Если «произвольная глубина» — жёсткое требование, замените рекурсивные вызовы явным стеком итераторов, а не увеличивайте бесконтрольно лимит рекурсии.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее