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

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

F(0) = 0;

F(n)  =  n + F(n − 3), если n mod 3  =  0 и n > 0;

F(n)  =  n + F(n − (n mod 3)), если n mod 3 > 0.

 

Чему равно зна­че­ние функ­ции F(22)?

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

Ре­ше­ние.

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

var n: longint;

function F(n: longint): longint;

begin

if n = 0

then F := 0

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

then F := n + F(n - 3)

else if ((n mod 3) > 0)

then F := n + F(n - (n mod 3));

end;

begin

n := F(22);

writeln(n);

end.

 

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

 

Ответ: 106.

 

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

def F(n):

if n == 0:

return 0

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

return n + F(n - 3)

if n % 3 > 0:

return n + F(n - (n % 3))

print(F(22))


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

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