История изменений
Исправление Nervous, (текущая версия) :
«Кратко и элегантно» - это серьезное достоинство для решений олимпиадных задач и для научных публикаций. В задачах производственного характера куда более важно «надежно и понятно».
Одно с другим связано, в общем-то. Более краткое решение часто проще, и поэтому надёжнее — меньше деталей, меньше шансов накосячить. Опять же понимать его может быть легче — тоже вполне себе производственное достоинство.
краткие и элегантные решения будут слишком заумными
Заумности, конечно, следует избегать — что в рекурсивных решениях, что в не очень.
В самой же рекурсии ничего заумного нет, довольно простая и лёгкая для понемания концепция, не какие-нибудь моноиды из категории эндофункторов.
с высокой вероятность наплодят трудноуловимых багов.
Когда у тебя весь алгоритм — один иф и три строчки несложного кода, накосячить гораздо сложнее, чем в двух экранах вложенных циклов, густо посыпанных тут и там изменяемым состоянием.
бизнесу это элегантное решение обойдется дороже
Если не будешь тащить рекурсию туда, где больше подходит итерация — не думаю.
А потом на вход прилетит больше данных чем думали при разработке и рекурсивный алгоритм упадёт выжрав разрешенный размер стека.
Само собой, без tail-call elimination про рекурсию можно сразу забыть.
Исходная версия Nervous, :
«Кратко и элегантно» - это серьезное достоинство для решений олимпиадных задач и для научных публикаций. В задачах производственного характера куда более важно «надежно и понятно».
Одно с другим связано, в общем-то. Более краткое решение часто проще, и поэтому надёжнее — меньше деталей, меньше шансов накосячить. Опять же понимать его может быть проще — тоже вполне себе производственное достоинство.
краткие и элегантные решения будут слишком заумными
Заумности, конечно, следует избегать — что в рекурсивных решениях, что в не очень.
В самой же рекурсии ничего заумного нет, довольно простая и лёгкая для понемания концепция, не какие-нибудь моноиды из категории эндофункторов.
с высокой вероятность наплодят трудноуловимых багов.
Когда у тебя весь алгоритм — один иф и три строчки несложного кода, накосячить гораздо сложнее, чем в двух экранах вложенных циклов, густо посыпанных тут и там изменяемым состоянием.
бизнесу это элегантное решение обойдется дороже
Если не будешь тащить рекурсию туда, где больше подходит итерация — не думаю.
А потом на вход прилетит больше данных чем думали при разработке и рекурсивный алгоритм упадёт выжрав разрешенный размер стека.
Само собой, без tail-call elimination про рекурсию можно сразу забыть.