СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 11 № 7459

Ниже на пяти языках программирования записан рекурсивный алгоритм F.

 

БейсикPython

SUB F(n)

    PRINT n

    IF n < 5 THEN

        F(n + 1)

        F(n + 3)

    END IF

END SUB

def F(n):

    print(n)

    if n < 5:

        F(n + 1)

        F(n + 3)

ПаскальАлгоритмический язык

procedure F(n: integer);

    begin

        writeln(n);

        if n < 5 then

            begin

                F(n + 1);

                F(n + 3)

            end

    end

алг F(цел n)

нач

вывод n, нс

если n < 5 то

    F(n + 1)

    F(n + 3)

все

кон

С++

void F(int n)

{

    cout << n << endl;

    if (n < 5) {

        F(n + 1);

        F(n + 3);

    }

}

 

Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(1)?

Решение.

Первым действием процедура F(1) выведет число 1. Далее процедура F(1) вызовет процедуру F(n + 1), в результате выполнения которой на экране появится число n + 1 = 2. Процедура F(2) вызовет процедуру F(3), которая выведет на экран число 3 и вызовет процедуру F(4), которая выведет на экран число 4 и вызовет F(5), которая выведет на экран число 5.

После этого управление вернётся к процедуре F(4), которая начнёт выполнять следующий шаг своего алгоритма, т. е. обратиться к процедуре F(n + 3) = F(7). Процедура F(7) выведет на экран число 7. Далее управление вернётся к процедуре F(3). Рассуждая аналогично приходим к выводу, что процедура F(3) дополнительно выведет на экран число 6, процедура F(2) — 5.

Последним действием процедуры F(1) будет вызов процедуры F(n + 3) = F(4), которая выведет на экран числа 4, 5, 7.

Таким образом, на экране будут числа 1, 2, 3, 4, 5, 7, 6, 5, 4, 5, 7. Их сумма равна 49.

 

Ответ: 49.

Источник: Де­мон­стра­ци­он­ная версия ЕГЭ—2015 по информатике.