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

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

 

Бей­сикPython

SUB F(n)

    IF n > 2 THEN

         F(n \ 2)

         PRINT n;

         F(n − 2)

    END IF

END SUB

 

def F(n):

    if n > 2:

        F(n // 2)

        print(n, end='')

        F(n − 2)

 

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

procedure F(n: integer);

begin

    if n > 2 then begin

        F(n div 2);

        write(n);

        F(n − 2);

    end;

end;

 

алг F(цел n)

нач

    если n > 2 то

        F(div(n,2))

        вывод n

        F(n − 2)

    все

кон

 

С++

void F (int n)

{

     if (n > 2) {

        F (n / 2);

        std::cout << n;

        F (n − 2);

    }

}

 

 

 

За­пи­ши­те под­ряд без про­бе­лов и раз­де­ли­те­лей все числа, ко­то­рые будут по­ка­за­ны на экра­не при вы­пол­не­нии вы­зо­ва F(9). Числа долж­ны быть за­пи­са­ны в том же по­ряд­ке, в ко­то­ром они вы­во­дят­ся на экран.

Спрятать решение

Ре­ше­ние.

Пер­вым дей­стви­ем про­це­ду­ра F(9) вы­зо­вет про­це­ду­ру F(n / 2), т. е. F(4), ко­то­рая вы­зо­вет про­це­ду­ру F(2) и сле­ду­ю­щим шагом сво­е­го ал­го­рит­ма вы­ве­дет на экран число 4, после чего об­ра­тит­ся к про­це­ду­ре F(n − 2), т. е. вы­зо­вет про­це­ду­ру F(2).

После этого управ­ле­ние вернётся к про­це­ду­ре F(9), ко­то­рая сле­ду­ю­щим шагом сво­е­го ал­го­рит­ма вы­ве­дет на экран число 9, после чего об­ра­тит­ся к про­це­ду­ре F(n − 2), т. е. об­ра­тит­ся к про­це­ду­ре F(7), ко­то­рая вы­зо­вет про­це­ду­ру F(3), ко­то­рая вы­зо­вет про­це­ду­ру F(1), сле­ду­ю­щим шагом сво­е­го ал­го­рит­ма вы­ве­дет на экран число 3, после чего об­ра­тит­ся к про­це­ду­ре F(n − 2), т. е. вы­зо­вет про­це­ду­ру F(1). Далее управ­ле­ние вернётся к про­це­ду­ре F(7), ко­то­рая начнёт вы­пол­нять сле­ду­ю­щий шаг сво­е­го ал­го­рит­ма и вы­ве­дет на экран число 7. После этого будет вы­зва­на про­це­ду­ра F(5), ко­то­рая вы­зо­вет про­це­ду­ру F(2), после чего на экран будет вы­ве­де­но число 5, после чего будет вы­зва­на про­це­ду­ра F(n − 2), т. е. F(3), ко­то­рая вы­зо­вет про­це­ду­ру F(1), после чего на экран будет вы­ве­де­но число 3, после чего об­ра­тит­ся к про­це­ду­ре F(n − 2), т. е. вы­зо­вет про­це­ду­ру F(1), за­вер­ша­ю­щую ал­го­ритм.

 

Ответ: 493753.

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