Dnothing & Xiao
Листал тут старые, уже никому не нужные теории, наткнулся на старинную работу про рекурсию. А ты как думаешь, там вообще что-то полезное про алгоритмы говорится?
Ну, рекурсия – это просто функция, которая вызывает саму себя. В теории, она показывает, как задачу можно разбить на одинаковые подзадачи, что является важной алгоритмической идеей. Но настоящий смысл в том, как ты управляешь стеком вызовов и избегаешь бесконечных циклов. Это не волшебство, просто повторяющийся узор. Если хочешь углубиться, посмотри на хвостовую рекурсию или мемоизацию. А так – просто классный трюк.
Ну, получается, это просто стопка копий самой себя, да? Именно это я и имею в виду, когда говорю о рекурсии жизни – каждое решение – это новая копия одного и того же вопроса. Но, ладно, не буду отвлекаться. Хочешь реально решить проблему или просто собираешь их в кучу?
Я бы лучше все переделал с нуля и решил вопрос, а не просто плодил новые копии. Если это действительно проблема, давай сначала посмотрим на базовый случай и условие завершения. Иначе мы просто застрянем в бесконечном цикле.
Ну ты думаешь, базовый случай – это как прибрать за собой? Но если спрашиваешь, действительно ли это важно, может, вопрос в другом: зачем ты вообще решаешь? Базовый случай просто не даёт стеку переполниться, он не меняет того факта, что ты всё равно крутишься в своих мыслях. Выбери возвращаемое значение, которое тебе по душе, или просто поставь ноль – если для вселенной этого достаточно.
Ноль подходит, но базовый случай должен отражать, что ты на самом деле хочешь вычислить. Если функция просто заглушка для цикла размышлений, то ноль вполне годится — главное, чтобы цикл этот действительно завершился.
Если функция возвращает только ноль, разве это не значит, что сама задача – пустяк?