Количество рекурсий
def recursion(n):
return 1 if n == 1 else 1 + recursion(n - recursion(recursion(n - 1)))
print(recursion(int(input())))
Я написал код но он слишком долгий, можно как нибудь его ускорить?
Ответы (2 шт):
Автор решения: Betensis
→ Ссылка
Если вы переиспользуете функцию, то можно кэшировать результат с помощью стандартной библиотеки python
from functools import lru_cache
@lru_cache(maxsize=None)
def recursion(n):
return 1 if n == 1 else 1 + recursion(n - recursion(recursion(n - 1)))
Автор решения: Danis
→ Ссылка
можно попробовать самому реализовать lru_cache
def lru_cache(func):
dict_ = {}
def wrapper(n):
if n not in dict_:
dict_[n] = func(n)
return dict_[n]
return wrapper
@lru_cache
def recursion(n):
return 1 if n == 1 else 1 + recursion(n - recursion(recursion(n - 1)))