Обозначим через a mod b остаток от деления натурального
F(0) = 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))

