Соотнесите алгоритм, использующий рекурсивную функцию с аналогичным алгоритмом, реализующим решение с помощью динамики. def f(n): if n == 0: return 0 elif n == 1: return 1 else: return f(n-1) + f(n-2) def f(n): if n == 0: return 0 else: return n % 10 + f(n // 10) def f(n, d = 2): if n <= 1: return 0 while n % d == 0: print(d) n = n / d f(n, d + 1) def f(n): if n == 0 or n == 1: return 1 else: return n * f(n-1) def f(n): p = 2 while n > 1: if n % p == 0: print(p) n /= p else: p += 1 def f(n): result = 1 for i in range(1, n+1): result *= i return result def f(n): if n == 0: return 0 elif n == 1: return 1 else: a, b = 0, 1 for _ in range(n-1): t = a a = b b = t + b return b def f(n): result = 0 while n > 0: digit = n % 10 result += digit n = n // 10 return result
Задание

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

  • Объекты 1
    • def f\(n\):
      if n == 0:
      return 0
      elif n == 1:
      return 1
      else:
      return f\(n\-1\) + f\(n\-2\)
    • def f\(n\):
      if n == 0:
      return 0
      else:
      return n % 10 + f\(n // 10\)
    • def f\(n, d = 2\):
      if n <= 1:
      return 0
      while n % d == 0:
      print\(d\)
      n = n / d
      f\(n, d \+ 1\)
    • def f\(n\):
      if n == 0 or n == 1:
      return 1
      else:
      return n * f\(n\-1\)
  • Объекты 2
    • def f\(n\):
      p = 2
      while n > 1:
      if n % p == 0:
      print\(p\)
      n /= p
      else:
      p += 1
    • def f\(n\):
      result = 1
      for i in range\(1, n\+1\):
      result *= i
      return result
    • def f\(n\):
      if n == 0:
      return 0
      elif n == 1:
      return 1
      else:
      a, b = 0, 1
      for _ in range\(n\-1\):
      t = a
      a = b
      b = t + b
      return b
    • def f\(n\):
      result = 0
      while n > 0:
      digit = n % 10
      result += digit
      n = n // 10
      return result