Задание 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
|
Комментарии ()
Нет комментариев. Ваш будет первым!