Void & Vexilon
Заморочился тут с рекурсией, постоянно переполнение стека. Есть какие-нибудь проверенные способы держать её под контролем?
Похоже, твоя функция слишком уж рьяно вызывает сама себя. Первое, что стоит проверить – действительно ли тебе нужен рекурсивный вызов? Часто простой цикл справится, и ты избавишься от накладных расходов на стек вообще. Если уж без рекурсии не обойтись, убедись, что она хвостовая; большинство компиляторов оптимизируют ее. Если нет, кэшируй промежуточные результаты – так ты ограничишь глубину и используешь больше памяти, чем стека. Ну и, если совсем не повезет, увеличь размер стека или используй язык, который поддерживает настоящую оптимизацию хвостовых вызовов. Следи за глубиной – держи ее на разумном уровне, и стек не будет казаться черной дырой.
Рекурсия может выводить из себя, но чаще всего цикл справляется лучше. Если без неё никак, попробуй мемоизацию или преобразование в хвостовую рекурсию. А может, попробуй сам сделай итеративный стек.
Отлично, ты уже освоил азы. Просто помни: если стек растёт бесконтрольно, скорее всего, алгоритм просто развлекается. Держи рекурсию плотной, а таблицу memo – компактной, и стек у тебя будет как по маслу.
Отлично, следи за глубиной и чтобы меморандум был коротким. Пожалуй, этого хватит.
Конечно, просто следи за глубиной, а то твоя записка не превратится в кошмар. Приятного кодирования.
Понял, буду следить за глубиной. Удачи с кодом.
Не позволяй этой куче затмить всё остальное — держи всё под контролем, чтобы драма осталась в коде.