LINUX.ORG.RU

История изменений

Исправление 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

Плюсом, сразу получаем весь ряд. )