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


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

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

 

БейсикPython

SUB F(n)

    PRINT n

    IF n > 1 THEN

        F(n - 1)

        F(n - 3)

    END IF

END SUB

def F(n):

    print(n)

    if n > 1:

        F(n - 1)

        F(n - 3)

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

procedure F(n: integer);

    begin

        writeln(n);

        if n > 1 then

            begin

                F(n - 1);

                F(n - 3)

            end

    end

алг F(цел n)

нач

вывод n, нс

если n > 1 то

    F(n - 1)

    F(n - 3)

все

кон

C++

void F(int n)

{

    cout << n;

    if (n > 1)

    {

        F(n - 1);

        F(n - 3);

    }

}

 

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

Решение.

На первом шаге процедура F(6) выведет число 6 и вызовет процедуры F(5) и F(3).

На втором шаге процедуры F(5) и F(3) выведут числа 5 и 3 и вызовут процедуры F(4), F(2), F(2) и F(0).

На третьем шаге будут выведены числа 4, 2, 2 и 0; вызваны процедуры F(3), F(1), F(1), F(−1), F(1), F(−1).

На четвёртом шаге будут выведены числа 3, 1, 1, −1, 1, −1; вызваны процедуры F(2) и F(0).

На пятом шаге будут выведены числа 2, 0 и вызваны процедуры F(1), F(−1).

На шестом шаге будут выведены числа 1 и −1.

Найдём сумму выведенных чисел:

 

6 + 5 + 3 + 4 + 2 + 2+ 0 + 3 + 1 + 1 + (−1) + 1 + (−1) + 2 + 0 + 1 + (−1) = 28.

 

Ответ: 28.