История изменений
Исправление vvn_black, (текущая версия) :
Ещё немного функциональщины, без рекурсивного ограничения и даже с попыткой «тупой» оптимизации мемоизацией:
from functools import reduce
def fib(n):
return reduce(
lambda a, c: c > 2 and {**a, **{c: a[c - 1] + a[c - 2]}} or a,
range(n + 1),
{0: 0, 1: 1, 2: 1})[n]
print(fib(10000))
33644...(ещё 2080 знаков)...66875
real 0m1,199s
user 0m1,176s
sys 0m0,024s
Плюсом, сразу получаем весь ряд. )
Исходная версия vvn_black, :
Ещё немного функциональщины, без рекурсивного ограничения и даже с попыткой «тупой» оптимизации мемоизацией:
def fib(n):
return reduce(
lambda a, c: c > 2 and {**a, **{c: a[c - 1] + a[c - 2]}} or a,
range(n + 1),
{0: 0, 1: 1, 2: 1})[n]
print(fib(10000))
33644...(ещё 2080 знаков)...66875
real 0m1,199s
user 0m1,176s
sys 0m0,024s
Плюсом, сразу получаем весь ряд. )