Задание

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

  • Объекты 1
    • int f\(int n\) {
      if \(n == 0\)
      return 0;
      else if \(n == 1\)
      return 1;
      else
      return f\(n \- 1\) + f\(n \- 2\);
      }
    • int f\(int n\) {
      if \(n == 0\)
      return 0;
      else
      return n % 10 + f\(n / 10\);
      }
    • void f\(int n, int p = 2\) {
      if \(n \\lt = 1\)
      return 0;
      while \(n % p == 0\) {
      cout << p << endl;
      n /= p;
      }
      f\(n, p \+ 1\);
      }
    • int f\(int n\) {
      if \(n == 0 \|\| n == 1\)
      return 1;
      else
      return n * f\(n \- 1\);
      }
  • Объекты 2
    • int f\(int n\) {
      int a = 0;
      int b = 1;
      if \(n == 0\) {
      return a;
      }
      else if \(n == 1\) {
      return b;
      }
      else {
      for \(int i = 2; i \\lt = n; i\+\+\) {
      int temp = b;
      b = a + b;
      a = temp;
      }
      return b;
      }
      }
    • int f\(int n\) {
      int sum = 0;
      while \(n \\gt 0\) {
      int digit = n % 10;
      sum += digit;
      n /= 10;
      }
      return sum;
      }
    • void f\(int n\) {
      int p = 2;
      while \(n \\gt 1\) {
      if \(n % p == 0\) {
      cout << p << endl;
      n /= p;
      }
      else {
      p++;
      }
      }
      }
    • int f\(int n\) {
      int result = 1;
      for \(int i = 1; i \\lt = n; i\+\+\) {
      result *= i;
      }
      return result;
      }