Задание
Соотнесите алгоритм, использующий рекурсивную функцию с аналогичным алгоритмом, реализующим решение с помощью динамики.
- Объекты 1
- procedure f\(n, p: Integer\);
begin
if n <= 1 then
Exit;
while n mod p= 0 do
begin
writeln\(p\);
n := n div p;
end;
f\(n, p\+1\);
end; - function f\(n: Integer\): Integer;
begin
if n = 0 then
f:= 0
else
f:= n mod 10 + f\(n div 10\);
end; - function f\(n: Integer\): Integer;
begin
if n = 0 then
f:= 0
else if n = 1 then
f:= 1
else
f:= f\(n\-1\) + f\(n\-2\);
end; - function f\(n: Integer\): Integer;
begin
if \(n = 0\) or \(n = 1\) then
f:= 1
else
f:= n * f\(n\-1\);
end;
- procedure f\(n, p: Integer\);
- Объекты 2
- function f\(n: integer\): integer;
var
sum, digit: integer;
begin
sum := 0;
while n > 0 do
begin
digit := n mod 10;
sum := sum + digit;
n := n div 10;
end;
Result := sum;
end; - procedure f\(n: integer\);
var
p: integer;
begin
p := 2;
while n > 1 do
begin
if n mod p = 0 then
begin
WriteLn\(p\);
n := n div p;
end
else
p := p + 1;
end;
end; - function f\(n: integer\): integer;
var
i, a, b, temp: integer;
begin
a := 0;
b := 1;
if n = 0 then
Result := a
else if n = 1 then
Result := b
else begin
for i := 2 to n do
begin
temp := b;
b := a + b;
a := temp;
end;
Result := b;
end;
end; - function f\(n: integer\): integer;
var
i, result: integer;
begin
result := 1;
for i := 1 to n do
result := result * i;
Result := result;
end;
- function f\(n: integer\): integer;