Advertisement
C3EQUALZ

Задание 16 ЕГЭ

Nov 15th, 2021 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.69 KB | None | 0 0
  1. Pascal abc.net:
  2. function f(n: integer): integer;
  3. begin
  4.   if n<=2 then f:=2 else
  5.     f:=f(n-1) + 3*f(n-2);
  6. end;
  7. begin
  8.   print(f(5))
  9. end.
  10. ------------------------------------------------------------------------------------------------------------------
  11. Python:
  12. ### Есть несколько случаев, когда надо применять различные модули для реализации кода.
  13. 1) Если не хватает глубины рекурсии, то
  14. import sys
  15. sys.setrecursionlimit(10000) --> устанавливаем глубину рекурсии, то есть мы могли уходить вглубь больше.
  16. 2) Если нужно запоминать множество значений, то
  17. from functools import lru_cache
  18. @lru_cache(None) --> данная функция создает словарик, который сохраняет значения для опр n.
  19. Полезно, когда много обращений к прошлым значениям. Повышает производительность системы, так как заново не надо считать.
  20. Обязательно должны его заполнить, в ином случае толку не будет.
  21. Пример:
  22. from functools import lru_cache
  23. @lru_cache(None)
  24. def f(n):
  25.     if n == 1: return 1
  26.     if n > 1 and n % 2 == 0: return n // 2 + f(n-1)
  27.     if n > 1 and n % 2 != 0: return n + f(n-2)
  28.  
  29. for i in range(1,10000):
  30.     f(i)
  31.  
  32. print(f(10000) - f(9993))
  33. P.S если в задании несколько функций, то к каждой накладываем кэш. 2 функции, значит 2 кэша.
  34.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement