Согласно вики, любой рекурсивный алгоритм можно воспроизвести без рекурсии, используя стэк и цикл.
Интересует, использует ли кто то из форумчан рекурсивные алгоритмы в работе, и почему
Согласно вики, любой рекурсивный алгоритм можно воспроизвести без рекурсии, используя стэк и цикл.
Интересует, использует ли кто то из форумчан рекурсивные алгоритмы в работе, и почему
использую
не использую
Предпочитаю рекурсию. Изящней.
Вернее не предпочитаю, а просто использую - это проще, чем "стэк и цикл".
можете привести пример кода. когда вам понадобилась рекурсия?
(4) Работа с иерархическими справочниками, деревом значений, группировками в отчетах, табличных документах. Что наобум вспомнил.
а код есть? А то я не врублюсь где такое понадобится может)
Конечно, в иерархических структурах с неограниченной глубиной оптимальнее алгоритма не найти.
в игре сапер используется. Когда игрок тыкает в область, где рядом ноль мин, рекурсивно открываются все квадратики вокруг этой области.
Рекурсивные алгоритмы это и есть стек и цикл по своей сути
ЗлобнийМальчик (8) что есть оптимальность
Архитектура кода.
Соттветствие кода мыслительным паттернам хомо сапиенс.
Оптимальность, кмк, это баланс затрат использования процессорного времени, памяти и других ресурсов компьютера и затрат на разработку при решении программерских задачь.
ЗлобнийМальчик что есть оптимальность
В данном контексте - наглядность и избежание лишнего копрокодинга. В (9) все верно сказано, рекурсия - это и есть стек+цикл, так зачем плодить сущности сверх необходимости?
Рекурсия по сути встречается редко. А вот ООП гораздо чаще. И влияние использования ООП на скорость разработки, поддержку и доработку значительно выше.
jsmith82 Рекурсия по сути встречается редко. А вот ООП гораздо чаще.
Крокодилы в России встречаются редко, а вот пельмени гораздо чаще. Да и пельмени вкуснее крокодилов
(17) Я тоже так считаю.
(15) Наследование - любой вид документа наследует от документатбъекта, любой вид справочника наследует от справочникаобъекта
Полиморфизм - у доков, справочников, планов обмена и т. д. есть одинаковые методы, получитьОбъект, Записать, Выбрать,...
Абстракция - мы же не пишем записи в БД, не строим там табоицы, оперируем документами, справочниками, не вдаваясь даже в какой они бд, или даже не в бд (файловая)
Инкапсуляция - а вот тут хз, нет этого в 1с пока
простой пример, перевод из шестнадцатиричной в десятичную и обратно:
Функция Из10в16(ЧислоВходящее) Экспорт МладшиеБиты = ЧислоВходящее % 16; СтаршиеБиты = Цел(ЧислоВходящее / 16); МладшиеБитыСтр = Сред("0123456789ABCDEF", МладшиеБиты + 1, 1); Если СтаршиеБиты > 0 Тогда Возврат Из10в16(СтаршиеБиты) + МладшиеБитыСтр; Иначе Возврат МладшиеБитыСтр; КонецЕсли; КонецФункции Функция Из16в10(ЧислоВходящее) Экспорт МладшиеБиты = Найти("0123456789ABCDEF", Прав(ЧислоВходящее, 1)) - 1; СтаршиеБиты = Лев(ЧислоВходящее, СтрДлина(ЧислоВходящее) - 1); Если СтаршиеБиты <> "" Тогда Возврат Из16в10(СтаршиеБиты)*16 + МладшиеБиты; Иначе Возврат МладшиеБиты; КонецЕсли; КонецФункции
мне более наглядно рекурсией
(19) ты не можешь сам создать объект, унаследованный от другого созданного тобой объекта.
Впрочем, ладно, этот спор уже давно идёт. Нет смысла его продолжать
(20) во тут как раз рекурсия нафиг не сдалась
Функция Из10в16(Знач ЧислоВходящее) Экспорт МладшиеБитыСтр=""; Пока ЧислоВходящее>0 Цикл МладшиеБитыСтр = Сред("0123456789ABCDEF", ЧислоВходящее % 16 + 1, 1)+МладшиеБитыСтр; ЧислоВходящее = Цел(ЧислоВходящее / 16); КонецЦикла Возврат ?(МладшиеБитыСтр="", "0",МладшиеБитыСтр); КонецФункции
я б так переписал
тупица ты. мечтай о том, что твой враг глупее тебя. Рекурсию делал для обхода графов, деревьев и даже структуры каталогов. Я настоящий программист в отличии от тебя. Я учился на программиста, а не как ты на бухгалтера.
(28) Что и требовалось доказать.
слился
И оно выглядит так n! = n * (n-1)! - я еще подумал чего то оно меня смущает ...
(32) т-с-с
мегапрогу подсказки не нужны