Соотнесите алгоритм, использующий рекурсивную функцию с аналогичным алгоритмом, реализующим решение с помощью динамики. 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; 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;
Задание

Соотнесите алгоритм, использующий рекурсивную функцию с аналогичным алгоритмом, реализующим решение с помощью динамики.

  • Объекты 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;
  • Объекты 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;