Алгоритм вычисления значения функции F(n), где n — натуральное число, задан следующими соотношениями:
F(1) = 1;
F(n) = n + F(n − 2), если n нечётно и n > 1;
F(n) = n · F(n − 1), если n чётно.
Чему равно значение функции F(60)?
Приведём программу на Паскале, решающую данную задачу:
var n: longint;
function F(n: longint): longint;
begin
if n = 1
then F := 1
else if ((n mod 2) = 0)
then F := n * F(n - 1)
else if (((n mod 2) = 1) and (n > 1))
then F := n + F(n - 2);
end;
begin
n := F(60);
writeln(n);
end.
Результат работы программы — 54000.
Ответ: 54000.
Приведём другое решение на языке Python.
def F(n):
if n == 1:
return 1
if n % 2 != 0 and n > 1:
return n + F(n - 2)
if n % 2 == 0:
return n * F(n - 1)
print(F(60))

