Задание 6. Тип заданий 11: рекурсивные алгоритмы.
  • Задание:

    Ниже на записан алгоритм рекурсивной процедуры F:

    Pascal:

    Procedure F(n: integer);
    begin
       writeln('*');
    if n > 0 then
       begin
         F(n-1);
         F(n-3);
       end;
    end;

    Сколько символов "звёздочка" будет выведено на экран при вызове процедуры F(6)?

  • Решение:

    Рекурсивная процедура — это процедура, которая вызывает сама себя. В данном случае процедура F(n) вызывает процедуры F(n-1) и F(n-3) в том случае, если n>0. Например, процедура F(4) вызовет F(3) и F(1), которые, в свою очередь, вызовут процедуры F(2), F(0), F(0), F(-2) и т.д.

    Символ "звёздочка" выводится каждый раз, когда вызывается процедура F. Построим граф, отображающий все процедуры, которые будут вызваны при вызове F(6):

    Граф рекурсивного алгоритма

    Теперь остаётся только сосчитать все процедуры, которые будут вызваны. Их 25, значит на экран будет выведено 25 символов "звёздочка".

    Ответ: 25

Поделиться:
 
Комментарии (0)

Нет комментариев. Ваш будет первым!

Перевести число из в Результат: 510 = 1012