#0
by Handlez
Хочется посмотреть на пример рекурсии на встроенном языке 1с, только какой-нибудь реально используемый.
#11
by Handlez
ПОчему зло? Нет, ну в том смысле как это реализуется именно с использованием языка самого. Беру свои слова назад
#15
by Mikeware
Ага, практически в любом типовом отчете... ПечатьСтроки вроде, рекурсивно вызывается...
#23
by vde69
а для зацикленого дерева? это самые распространенные грабли, по этому пользоваться нужно с осторожностью
#25
by Fragster
а ты не цикли дерево :) у меня считается "задача про рюкзак" применительно к складским ячейкам через рекурсию
#28
by vde69
например анализ стека выполнения макроса VB, вроде раскладываеться в дерево, ан далеко не всегда... у меня специальный анализаитор для подстановки шаблонов сделан, для определения зацикливания рекурсии.
#45
by Sserj
Видимо самое простое это получение полного наименование чего либо (со всеми вышестоящими группами).
#46
by ДенисЧ
ПолноеНаименование Синтаксис: ПолноеНаименование Назначение: Возвращает строку, содержащую полное наименование выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом /.
#48
by Sserj
Это элементарный пример, возможно будет нужен, если к примеру в именах групп встречаются знаки /, можно заменить на свой разделитель. Я подобное использовал при обмене - раскручивал иерархию справочников для сохранения всего дерева.
#51
by Злопчинский
по определению рекурсии - глобальные переменные там нафиг не нужны, они могут использоваться, но на сам факт выполнения рекурсии никоим образом не влияют...
#52
by mrkorn
если голбальные переменные использовать в внутри рекурсии и менять их... или еще что-нибудь через них замутить... но это пример криворукой рекурсии
#60
by DemMif
1.Обработка досталось по наследству и все работает))). 2.не знаю... Можно убрать, только лень корректировать.
#64
by Просто Лёха
что там работать не будет? Перенесли справочник с сотрудниками более 3000 чел, все как по маслу
#68
by Rie
1. Много отвратительного кода - работает. От этого он не перестаёт быть отвратительным. Глупый совет. В использование рекурсии - весьма разумно. В использование рекурсии несколько противоестественно.
#72
by Rie
В используется так называемая "хвостовая рекурсия" - то есть, рекурсивный вызов является последним исполняемым оператором рекурсивной процедуры. Рекурсивная процедура с хвостовой рекурсией: Процедура Рек(Знач Х) Процедура Нерек(Знач Х) При этом Нерек потребляет меньше памяти, работает быстрее, а выглядит ничуть не сложнее, чем Рек. Хорошие оптимизирующие компиляторы отлавливают случаи хвостовой рекурсии и сами преобразуют их в циклы. 1С не является (в данном вопросе) хорошим оптимизирующим компилятором. В рекурсия является "хвостовой" - то есть, является _более туманным_ (с точки зрения чтения) и _медленнее работающим_ эквивалентом цикла.
#73
by Rie
Факториал - другой (по сравнению с ) вид рекурсии, преобразуемый в цикл. _В 1С_ использование цикла _для таких случаев_ - проще и эффективнее (подчёркнутое - существенно). Недавно на этом форуме всплывал дурацкий пример с числами Фибоначчи, где _неправильное_ использование рекурсии повышало время вычислений с N до N*N.
#74
by DemMif
А как в таком случае добиться, чтобы пользователь, к примеру ввел 9 знаков, а не меньше?
#79
by Rie
Влияет. И на скорость, и на объём занимаемой памяти. Помедитируй над тем, что происходит при рекурсивном вызове, а что происходит при переходе к следующему шагу цикла.
#80
by victuan1
Очень часто приходится мне на практике пользоваться рекурсией: перенос данных между конфами, разузлование спецификаций в производстве и пр. Примеры те же, что и для паскаля.
#82
by Rie
Я не спорю, что будет. И я "за" рекурсию. Двумя руками. Но - применение рекурсии, как и любого другого средства, далеко не всегда целесообразно.
#83
by Rie
Любой человек набивает текст слишком медленно. Сгенерируй _большой_ файл, замени ВвестиСтроку на чтение из файла - и замерь время.
#85
by zak555
чего его искать... можно итак понять - если использовать и постояно делать "ошибкци", т.е. вызывать рекурсию, то стек вызова будет с каждым разом увеличиваться !!! а вот - не будет!
#88
by DemMif
Понятно объяснил... Спорить не буду... Но все же пользователю достаточно ошибится три раза. Не думаю, что пользователь ошибется 100 раз и более.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как сделать запрос к регистру расчетов
- Почему стирается полностью регистр и записывается только одна строка?
- v7: Субконто "Расчетные документы" по счетам 60 и 62 в УПП 1.2.21
- Hasp License Manager не стартует при включение компа - не успевает найти ключ
- можно ли удалить колонку из ТЗ?
- РИБ Настройка правил обмена
- Элементарные вопросы по регистрам расчета
- УПП. Справочник, Количество уровней иерархии=2; мало для создания группы?
- Как вызвать обработчик событий "ОбработкаРасшифровки" для поля табл док-та?
- v7: ЗУП, документ корректировка записей регистров накоплений, как он делает движения?
- Люди подскажите по восьмерке !
- В заголовке 1234 вместо ABCD (Excel 2007)
- Выгрузка групп номенклатуры в обработке ATOLCashierECROffline_v2.epf
- Обновление УТ 10.2.13.1 -> 10.3.1.17
- Как задать интервал при сравнении в отборе
- Создание запроса в Delphi для 1С.
- Разделение субсчета 60.1
- Штрих-М ФР-К и УТ
- Описание precomp.dll
- Удаление содержимого таблицы SQL