Форум сайта python.su
0
Здравствуйте ! Можно ли как-то оптимизировать эту рекурсию и сократить время выполнения кода ?
def fib_number(n): if n==1: return 0 elif n==2: return 1 return fib_number(n-1)+fib_number(n-2) n= int(input()) print(fib_number(n))
Офлайн
22
Можно ли как-то оптимизировать эту рекурсию и сократить время выполнения кода ?Ну, нормальным подходом будет сделать итеративный алгоритм. Держишь в локальных переменных два последние значения последовательности и проходишь циклом от 1 до n.
from cachetools.func import lfu_cache @lfu_cache(maxsize=10000) def fib_number(n): if n==1: return 0 elif n==2: return 1 return fib_number(n-1)+fib_number(n-2) n= int(input()) print(fib_number(n))
Отредактировано Striver (Март 16, 2020 06:49:28)
Офлайн