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

Ал­го­ритм вы­чис­ле­ния зна­че­ния функ­ции F(n), где n  — целое не­от­ри­ца­тель­ное число, задан сле­ду­ю­щи­ми со­от­но­ше­ни­я­ми:

F(0)  =  0;

F(n)  =  F(n / 2), если n > 0 и при этом n чётно;

F(n)  =  1 + F(n − 1), если n нечётно.

 

На­зо­ви­те ми­ни­маль­ное зна­че­ние n, для ко­то­ро­го F(n)  =  12.

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

Ре­ше­ние.

При­ведём про­грам­му на Пас­ка­ле, ре­ша­ю­щую дан­ную за­да­чу:

var n: longint;

i: integer;

function F(n: longint): longint;

begin

if n = 0

then F := 0

else if (((n mod 2) = 0) and (n > 0))

then F := F(n div 2)

else if ((n mod 2) > 0)

then F := 1 + F(n - 1);

end;

begin

i := 1;

while F(i) <> 12 do i := i + 1;

writeln(i);

end.

 

Ре­зуль­тат ра­бо­ты про­грам­мы  — 4095.

 

Ответ: 4095.

 

При­ведём дру­гое ре­ше­ние на языке Python.

def F(n):

if n == 0:

return 0

if n % 2 == 0 and n > 0:

return F(n // 2)

if n % 2 != 0:

return 1 + F(n - 1)

i = 0

while F(i) != 12:

i += 1

print(i)


Аналоги к заданию № 33518: 33761 Все

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