Рекурсия строится на синхронном вызове функций, где вызывающая сторона передает управление вызываемой функции и получает его обратно только после возврата управления и значения.
Синхронный вызов отслеживается с помощью стека вызовов, который содержит адреса возврата функций.
Применение рекурсии для генерации комбинаторных объектов
Видео объясняет, что перестановка - это размещение цифр без повторений в трех позициях.
Приводится пример с цифрами 0, 1, 2, где возможны различные перестановки: 012, 021, 102, 120, 201, 210.
Идея состоит в том, чтобы генерировать все возможные перестановки, начиная с нуля, и затем перебирать все перестановки, начинающиеся с единицы и двойки.
Автор объясняет, что при генерации перестановок необходимо отсекать бесплодные ветви, чтобы не тратить время на перебор заведомо забракованных вариантов.
Это позволяет сократить количество вызовов функции и ускорить процесс генерации.