intermediate
Рекурсия и backtracking
Base cases, рост стека, дерево выборов, pruning и безопасный undo state.
Recursion решает задачу через меньшие calls с base case. Backtracking исследует tree of choices, записывает candidate, делает recursion и затем отменяет choice. Он подходит для permutations, combinations, subsets, path search и constraint satisfaction.
Компромисс: сравните время, память и сложность реализации до выбора структуры или паттерна.
На интервью: Хорошие ответы определяют state, choices, stopping condition и pruning rule до кода. Также упоминают stack depth и когда iterative traversal безопаснее.
Типовые ошибки: Shared mutable arrays нужно копировать при сохранении results. Забытый undo state загрязняет следующие branches. Отсутствие base case дает infinite recursion.
Чеклист:
- Назовите state и choices.
- Запишите base case.
- Отменяйте mutations.
- Prune impossible branches.