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

Ниже на пяти язы­ках про­грам­ми­ро­ва­ния за­пи­сан ре­кур­сив­ный ал­го­ритм 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.

Раздел кодификатора ФИПИ: 1.5.3 Ин­дук­тив­ное опре­де­ле­ние объ­ек­тов