Печать
Родительская категория: Статьи
Категория: 1C

Рассмотрим пример использования рекурсии в программировании 1С на примере чисел Фибоначчи.

Числа Фибоначчи - элементы числовой последовательности, в которой каждое последующее число равно сумме двух предыдущих чисел.

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181...

Построение данной последовательности в информатике можно реализовать используя как циклы, так и рекурсивную функцию (процедуру). В нашем примере будет использована простая рекурсия - когда функция (процедура) вызывает саму себя и передает в саму же себя какие либо параметры (в нашем случае это числа a и b для суммирования).

В написании рекурсивного алгоритма обязательно нужно задать условие выхода из рекурсии, иначе программа зациклится в бесконечность! Например, выстраивать последовательность до тех пор, пока она не достигнет миллиона.

На языке 1С данный код будет выглядеть следующим образом:


Процедура ВывестиПоследовательность(Команда)
    //Значение первых чисел последовательности
    a = 1;
    b = 1;
   
    //Вывод первых чисел
    Сообщить (a);
    Сообщить (b);
   
    //Вход в рекурсию
    ПродолжитьПоследовательность(a, b)
КонецПроцедуры

Процедура ПродолжитьПоследовательность(a, b)
    c = a + b;
    Сообщить (c);
   
    a = b;
    b = c;
   
    //Условие выхода из рекурсии
    Если c < 1000000 Тогда
        ПродолжитьПоследовательность(a, b)
    Иначе
        Возврат
    КонецЕсли;
   

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

 

Как мы видим, процедура Продолжить последовательность является рекурсивной. Она складывает последние 2 числа последовательности, ставит в конец последовательности их сумму и так далее.