У меня есть две разные реализации функции (например, размера дерева): одна рекурсивная, а другая использует явный стек.
Рекурсия очень быстрая (вероятно, потому, что ей не нужно ничего выделять в куче), но может вызвать переполнение стека на некоторых «редких» входных данных (в примере с деревом это будет на любом несбалансированном дереве). Явная версия работает медленнее, но вряд ли вызовет переполнение стека.
Насколько безопасно использовать рекурсивную реализацию по умолчанию и восстанавливаться после исключения StackOverflowError, выполняя явную версию?
Считается ли это плохой практикой?
Вот небольшой пример кода:
interface Node {
List