TGViewer
1С:Предприятие 8 1С:Предприятие 8 @devlab1c · 866 subscribers
Post #434 421
Использование рекурсии в 1С. Понятие рекурсии в 1С.

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

Из определения рекурсии следует вывод, что во избежание бесконечного увеличения стека вызовов, необходимо предусмотреть условие выхода – условие, при котором очередной рекурсивный вызов не произойдет, что положит начало «заворачиванию» стека, по окончании которого получим конечный результат.

&НаКлиенте

Процедура Сосчитать(Команда)

СчетДоДесяти(Число);

КонецПроцедуры



Процедура СчетДоДесяти(НачальноеЧисло)

Если НачальноеЧисло <= 10 Тогда

Сообщить(Строка(НачальноеЧисло));

НачальноеЧисло = НачальноеЧисло + 1;

СчетДоДесяти(НачальноеЧисло);

Иначе //выход из рекурсии

Сообщить("Счет окончен.");

Возврат;

КонецЕсли;

КонецПроцедуры


Результат выполнения команды «Начать» из приведенного примера, можно получить просто используя цикл, а не рекурсию. Такой вариант был бы лучше и с точки зрения производительности, ведь каждый вызов процедуры подразумевает выделение памяти под значения локальных переменных.

Такой счет до десяти – пример линейной рекурсии в 1С. То есть каждый очередной вызов процедуры инициирует лишь один рекурсивный вызов или при выполнении условия выхода не инициирует вовсе.

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


Функция ПолучитьЧислоРядаФибоначчиПоНомеру(НомерЧислаВРяду)

Если НомерЧислаВРяду < 2 Тогда

Возврат НомерЧислаВРяду;

КонецЕсли;



Возврат ПолучитьЧислоРядаФибоначчиПоНомеру(НомерЧислаВРяду - 1) + ПолучитьЧислоРядаФибоначчиПоНомеру(НомерЧислаВРяду - 2)

КонецФункции



&НаКлиенте

Процедура Фибоначчи(Команда)

Сообщить(ПолучитьЧислоРядаФибоначчиПоНомеру(Число));

КонецПроцедуры

👉@DevLab1C
  • 🔥 2
  • 👍 1
More from @devlab1c
  1. Sep 28, 2026Как прочитать JSON в 1С Из этого видео вы узнаете Как прочитать JSON в 1С. Формат JSON сег…
  2. Sep 23, 2026Отбор документов с пустой ссылкой источник 📲 Мы в MAX 👉@DevLab1C
  3. Sep 21, 2026Отборы в отчетах источник 📲 Мы в MAX 👉@DevLab1C
  4. Sep 20, 20261С: Администрирование Установка и публикация базы 1С на IIS под ОС Windows 10/11 Присоедин…
  5. Sep 17, 2026Оптимизация запросов к СУБД при активном динамическом поиске в динамических списках источн…
  6. Sep 14, 2026Массовое исправление реквизита документов источник 📲 Мы в MAX 👉@DevLab1C
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →