Задание 2. Тип заданий 11: рекурсивные алгоритмы.
- Задание:
Ниже на записан алгоритм рекурсивной процедуры F: Pascal: | Procedure F(n: integer);
begin
writeln(n);
if n>1 then
begin
F(n-1);
F(n-2);
end;
end; |
Определите сумму цифр, выведенных на экран при выполнении процедуры F(5).
- Решение:
Значение n выводится независимо от условия, то есть при вызове процедуры F с любым значением n на экран будет выведено это самое значение n. Условие проверяет значение n: если оно больше 1, то вызывает процедуры F(n-1) и F(n-2). Для определения, процедуры с какими значениями n будут вызваны, построим граф: Красным отмечены процедуры, в которых условие не выполняется, так как n<=1. Остаётся посчитать все значения. Значение n выводится при выполнении каждой процедуры, то есть сумма будет равна: 5+4+3+3+2+2+1+2+1+1+0+1+0+1+0=26 Ответ: 26
|
Комментарии ()
As No
#
15 февраля 2016 в 20:30
0
|
|
Почему F2 отмечено красным?
|
|