LINUX.ORG.RU

История изменений

Исправление Nervous, (текущая версия) :

«Кратко и элегантно» - это серьезное достоинство для решений олимпиадных задач и для научных публикаций. В задачах производственного характера куда более важно «надежно и понятно».

Одно с другим связано, в общем-то. Более краткое решение часто проще, и поэтому надёжнее — меньше деталей, меньше шансов накосячить. Опять же понимать его может быть легче — тоже вполне себе производственное достоинство.

краткие и элегантные решения будут слишком заумными

Заумности, конечно, следует избегать — что в рекурсивных решениях, что в не очень.

В самой же рекурсии ничего заумного нет, довольно простая и лёгкая для понемания концепция, не какие-нибудь моноиды из категории эндофункторов.

с высокой вероятность наплодят трудноуловимых багов.

Когда у тебя весь алгоритм — один иф и три строчки несложного кода, накосячить гораздо сложнее, чем в двух экранах вложенных циклов, густо посыпанных тут и там изменяемым состоянием.

бизнесу это элегантное решение обойдется дороже

Если не будешь тащить рекурсию туда, где больше подходит итерация — не думаю.

А потом на вход прилетит больше данных чем думали при разработке и рекурсивный алгоритм упадёт выжрав разрешенный размер стека.

Само собой, без tail-call elimination про рекурсию можно сразу забыть.

Исходная версия Nervous, :

«Кратко и элегантно» - это серьезное достоинство для решений олимпиадных задач и для научных публикаций. В задачах производственного характера куда более важно «надежно и понятно».

Одно с другим связано, в общем-то. Более краткое решение часто проще, и поэтому надёжнее — меньше деталей, меньше шансов накосячить. Опять же понимать его может быть проще — тоже вполне себе производственное достоинство.

краткие и элегантные решения будут слишком заумными

Заумности, конечно, следует избегать — что в рекурсивных решениях, что в не очень.

В самой же рекурсии ничего заумного нет, довольно простая и лёгкая для понемания концепция, не какие-нибудь моноиды из категории эндофункторов.

с высокой вероятность наплодят трудноуловимых багов.

Когда у тебя весь алгоритм — один иф и три строчки несложного кода, накосячить гораздо сложнее, чем в двух экранах вложенных циклов, густо посыпанных тут и там изменяемым состоянием.

бизнесу это элегантное решение обойдется дороже

Если не будешь тащить рекурсию туда, где больше подходит итерация — не думаю.

А потом на вход прилетит больше данных чем думали при разработке и рекурсивный алгоритм упадёт выжрав разрешенный размер стека.

Само собой, без tail-call elimination про рекурсию можно сразу забыть.