В приложении дана блок-схема с алгоритмом, вычисляющим значение функции F по рекуррентной схеме.
Ниже приводится запись программы на языке Pascal, содержащая две функции - рекуррентную F (строго в соответствии с алгоритмом) и рекурсивную Fr.
Вывод иллюстрирует работу программы для значения аргумента n=6
function F(n: integer): integer;
{рекуррентная}
var
i, p: integer;
fn1, fn2: integer;
begin
case n of
1: Result := 1;
2: Result := 2;
else
begin
fn2 := 1;
fn1 := 2;
for i := 3 to n do
begin
p := 2 * fn1 + (i - 2) * fn2;
fn2 := fn1;
fn1 := p
end;
Result := p
end
end
end;
function Fr(n: integer): integer;
{рекурсивная - оцените изящество рекурсии!}
begin
case n of
1: Result := 1;
2: Result := 2;
else Result := 2 * Fr(n - 1) + (n - 2) * Fr(n - 2)
end
end;
begin
writeln(F(6), ' ', Fr(6))
end.
Тестовое решение:
142 142
Ответ: значение функции F(6) равно 142.