Обсуждение:Рекурсия

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Господа. Сейчас наблюдается некоторая война правок относительно необходимости рекурсии в статье про рекурсию. Я бы предложил несколько вариантов:

  • оставить статью без рекурсивных ссылок
  • рекурсия в цитате [1].
  • рекурсия в см. также [2].
  • рекурсия в первичном определении [3]

George Shuklin 13:55, 22 мая 2006 (UTC)[ответить]

Георгий, боюсь я Вам покажусь ужасно занудным, но, возможно Вам стоит просто подготовить статью о рекурсии для абсурдопедии (наверняка с Вашим тону=ким чувством юмора статья получится отличная), а отсюда дать ссылку на неё. Тогда и овцы будут сыты и волки целы. MaxiMaxiMax 14:05, 22 мая 2006 (UTC)[ответить]
Оставить без ссылок пока кто-нибудь не придумает, зачем они нужны. В указанном виде - ссыкли бессмысленны и ничего не иллюстрируют, только запутывают читателя. Может быть в википедии и можно отыскать понятия определённые рекурсивно, но это надо постараться. --Amoses @ 14:12, 22 мая 2006 (UTC)[ответить]
Думаю, что существуют статьи, рекурсивно ссылающиеся друг на друга в определении, но это нужно исправлять, а не культивировать. MaxiMaxiMax 14:16, 22 мая 2006 (UTC)[ответить]
Рекурсивных ссылок не надо. Лучше поставить ссылку на Y-комбинатор. Lispnik 14:16, 22 мая 2006 (UTC)[ответить]

По обсуждению в жожо решил взять часть статьи из английской вики. George Shuklin 14:22, 22 мая 2006 (UTC)[ответить]

Весь этот юмор относится к вырожденному случаю "дурной", "бесконечной" рекурсии. Надо это отметить, а то он действительно как-то дескридитирует идею индукции. --Amoses @ 14:38, 22 мая 2006 (UTC)[ответить]

Я таки это сделал! В статье есть ссылка на саму статью, и к такому виду, думаю, возражений не будет. ^_^George Shuklin 14:42, 22 мая 2006 (UTC)[ответить]

(на правах псевдовиртуала :) В принципе, рекурсивная ссылка в статье о рекурсии вещь довольно остроумная, и, вероятно, нелишняя. Но эта рекурсия должна быть явно выражена. Т.е. я бы сделал

  • либо единственную рекурсивную ссылку в разделе Cм. также: Рекурсия (NB: не "Рекурсивное определение рекурсии")
  • либо сделал ссылки на каждой интерации слова рекурсия - "чтоб дошло :)"

Все спрорные варианты - не выражены, поэтому я не вижу в них смысла - их мало кто заметит. Grain 14:49, 22 мая 2006 (UTC)[ответить]

«Рекурсия — см. Рекурсия» — это каноничный анекдот-определение. Оставить. Oal 23:25, 22 мая 2006 (UTC)[ответить]

"Реку́рсия — метод определения класса объектов или методов предварительным заданием одного или нескольких (обычно простых) его базовых случаев или методов, а затем заданием на их основе правила построения определяемого класса, ссылающегося прямо или косвенно на эти базовые случаи." - вот потому вас и называют тем нехорошим словом, которое ваш фильтор правок не пропускает, это же надо так "просто" и "понятно" обьяснить банальный круговорот и возвращение к началу... Не всякий петрик на такое способен... Black Baron95.165.108.178 03:48, 15 июля 2010 (UTC)[ответить]

Что иллюстрируем-то[править код]

В чём будет заключаться показательность такого примера ? (Не вдаваясь в суть предмета) Что конкретно будет иллюстрировать такая ссылка ? Как сейчас, в разделе юмор - наверное, можно... --Kaganer 18:48, 22 мая 2006 (UTC)[ответить]

«Рассказ о разумной машине, которая обладала достаточным умом и ленью, чтобы для решения поставленной задачи построить себе подобную, и поручить решение ей». Хмм... а это случайно не Шекли? --ajvol 20:15, 22 мая 2006 (UTC)[ответить]

Нет. Там серия про роботов просветлённых, мудрейших и т.д. Наткнусь, напишу точные названия. (Шекли не доводит до настоящего абсурда :) George Shuklin 21:21, 22 мая 2006 (UTC)[ответить]

Наглядный пример рекурсии :)[править код]

[4] :) Edward Chernenko 17:06, 27 мая 2006 (UTC)[ответить]

Предлагаю вставить код программы на русском, как в 1С, вычисляющей факториал заданного числа. Очень наглядно! Wormantson 11:23, 19 апреля 2007 (UTC)[ответить]

Только в виде ОЧЕНЬ короткого псевдо-кода/алгоритма. Например
  1. Чтобы найти факториал Числа Х
  2. Если Х=1 то факториал равен 1
  3. Если Х не равен 1 то найти факториал числа (Х-1) и умножить на Х.
Так нагляднее, потому-что не все знают языки програмирования, а так понятнее, и все могут выполнить такой алгоритм даже без компьютера.--Hq3473 17:36, 19 апреля 2007 (UTC)[ответить]

А факториал таки рекуррентная, а не рекурсивная функция. И совсем не яркий пример рекурсии. 78.29.11.13 16:23, 9 сентября 2010 (UTC)[ответить]

Программный Код[править код]

Предлогаю или убрать код в ActionScript в викиучебник, или переписать псеводо-кодом. 90%(а то и больше) читателей все равно не поймут, а википедия не учебник по ActionScriptу.--Hq3473 03:15, 23 мая 2007 (UTC)[ответить]

Вперёд, переписывай. Ужé две недели прошло с твоего предложения, и никто не возразил. —Mithgol the Webmaster 06:57, 6 июня 2007 (UTC)[ответить]
Сделано.--Hq3473 02:19, 7 июня 2007 (UTC)[ответить]

Рекурсия в программировании[править код]

"В программировании рекурсия — вызов функции или процедуры из неё же самой (обычно с другими значениями входных параметров), непосредственно или через другие функции (например, функция А вызывает функцию B, а функция B — функцию A)."

Предлагаю заменить на:

В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия),например, функция А вызывает функцию B, а функция B — функцию A.

1) "обычно с другими значениями входных параметров" - не принципиально для определения, параметров может и не быть.

2) функция А может вызывать процедуру В, а та в свою очередь А и наоборот.

--tim2 09:24, 11 ноября 2007 (UTC)[ответить]

  • Уточнение "процедура" это ИМХО излишне, т.к. разделение искуственное и введено в преимущественно в паскале (зачем?). Вообще, если не рассматривать сторонние эффекты, в рамках концепции функций один и тот же набор параметров должен приводить к одному и тому же поведению (т.е. зацикливанию). Использование внешнего хранилища информации для управления рекурсией в общем случае эквивалентно просто расширению списка аргументов. #!George Shuklin 10:32, 11 ноября 2007 (UTC)[ответить]
  • Зачем в Паскале...: чтобы не возвращать результата, когда он не нужен...
  • внешнее хранилище - все-таки не параметр (хотя можно обобщить и так, многим будет непонятно), кроме того, процедура может запрашивать функцию, которая, например, считывает следующее имя из FAT на HD, т.о. процедура будет рекурсивно "шарить" по дереву директорий, не зацикливаясь; или запрашивать таймер, или генератор случайных чисел...(Таймер и генератор тоже можно обобщить как "внешнее хранилище", но стоит ли? ;) Для определения это не принципиально, как и то, какой вид подпрограммы (функция или процедура) вызывается. ИМХО, запись "функции (процедуры)" короче, чем "функции или процедуры", и не требует, при повторном появлении слова, снова писать "функции или процедуры". Иначе следовало бы записать:
"В программировании рекурсия — вызов функции или процедуры из неё же самой (обычно с другими значениями входных параметров), непосредственно или через другие функции или процедуры (например, функция или процедура А вызывает функцию или процедуру B, а функция или процедура B — функцию или процедуру A)."
  • Разговор всего лишь о форме (о словах) - по существу определения предлагаю лишь одно уточнение: добавить слова "простая рекурсия" и "сложная рекурсия" (см.выше).--tim2 11:29, 13 ноября 2007 (UTC)[ответить]
Прошло время, но возражений больше не последовало. Если все согласны, я исправляю через несколько дней определение на предложенное здесь.--tim2 14:25, 2 декабря 2007 (UTC)[ответить]
Сделано. --tim2 02:44, 27 декабря 2007 (UTC)[ответить]

Другие области[править код]

Мне кажется, что рекурсия - почти исключительно программистский термин (ну, и ещё лингвистика подходит, только имеет свой оттенок), а остальные примеры и области притянуты за уши. Например, Фибоначчи и факториал - это не рекурсия, а рекуррентные последовательности. Это уж от способа вычисления получается - итеративность или рекурсивность. Определение натурального числа - не рекурсия, а индукция. Про физику вообще молчу (зачем обратную связь втянули в эту статью - непонятно). Предлагаю исключить лишнее. infovarius 12:17, 22 марта 2008 (UTC) Полностью согласен, мусорка, а не статья. 78.29.11.13 09:35, 18 сентября 2010 (UTC)[ответить]

Бесконечно[править код]

Возможно, аноним пытается сказать, что в рамках ограниченного количества доступной оперативной памяти, о бесконечности в программировании речи идти не может. Может, как-то поправить на "потенциально бесконечное" или как-то так? --Illythr (Толк?) 14:42, 30 августа 2009 (UTC)[ответить]

Рекурсия — она бывает не только в программах для компьютеров с конечным объемом памяти. В математике и computer science есть понятие рекурсивного типа данных — где рекурсия используется для задания бесконечного множества объектов. Множества всех возможных двоичных деревьев, например. -- X7q 14:53, 30 августа 2009 (UTC)[ответить]
Верно, но раздел называется "Рекурсия в программировании". :-) Может, просто приписать "теоретически"? --Illythr (Толк?) 14:58, 30 августа 2009 (UTC)[ответить]
Да, я тоже думаю с "теоретически" было бы правильнее. -- X7q 07:14, 31 августа 2009 (UTC)[ответить]
"Бесконечную" рекурсию можно организовать и с конечным стеком, было бы желание. 91.207.100.2 07:41, 16 июня 2011 (UTC)[ответить]

Сcылка на "Recursive Curve Maker"[править код]

Уважаемые участники!

По неопытности я добавил в разделе "Рекурсия:Ссылки" ссылку на "Recursive Curve Maker" без регистрации и без предварительного обсуждения. Это программа построения рекурсивных кривых Гильберта, Серпинского и произвольных кривых с симметрией от 3 до 16-ого порядка. В пакете 90(180) наглядных примеров, с возможностью сохранять построенные кривые в формате BMP (ч.б. и цв.), создавать и отредактировать кривые. В программе такие кривые могут сгенерированы также со случайной закономерностью. Имеет медленный режим для наглядного показа вычерчивания рекурсивной кривой.

Мне кажется это хорошая демонстрация самого понятия рекурсии и рекурсивных объектов (кривых, фракталей). Что и предлагаю обсудить на предмет добавления ссылки в разделах "Рекурсия" и "Фракталь".

Эту программу я написал специально для внука как игру, с целью обучения. Написана она на Pascal-е в среде Delphi.Эта программа не коммерческая и свободно может распространяться.

С уважением --Vahram Mekhitarian 16:20, 10 декабря 2011 (UTC)[ответить]

Считаю, что в википедии не место для ссылок на exe'шники на бесплатных хостингах от непонятно кого. Там могут быть и вирусы, и трояны и все что угодно. И мир не только вокруг одной windows вертится. -- X7q 16:29, 10 декабря 2011 (UTC)[ответить]
Даже если рядом есть исходник (не заметил его на вашем сайте, впрочем), все равно лучше не ссылаться - мало ли что с exe'шником после компиляции могли сделать. В том числе даже и без участия человека - некоторые вирусы могут сами к чужим .exeшникам прицепляться. -- X7q 16:40, 10 декабря 2011 (UTC)[ответить]

В математике — путаница[править код]

В первом абзаце —

Конечная рекурсивная функция. ... Классический пример: рекурсивно-определённый факториал... Здесь каждое следующее рекурсивное обращение делается с аргументом, меньшим на единицу.

В конце раздела написано

Другим примером рекурсии в математике является числовая последовательность, заданная рекуррентной формулой,

Этот «другой» пример — повтор того, о чем говорится в первом абзаце. Mx1024 (обс.) 17:53, 23 октября 2017 (UTC)[ответить]