Задание 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

Поделиться:
 
Комментарии (2)
As No # 15 февраля 2016 в 20:30 0
Почему F2 отмечено красным?
Информатик БУ # 15 февраля 2016 в 20:53 0
Случайно.
Перевести число из в Результат: 510 = 1012