LINUX.ORG.RU

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

Исправление i-rinat, (текущая версия) :

А какие еще варианты функции, вычисляющей числа Фибоначчи приходят вам в голову?

def fib(n):
    q, w, e, r = 0, 1, 0, 1
    n += 1
    while n > 0:
        if n & 1:
            e, r = q * e + w * r, w * e + (q + w) * r
            n -= 1
        else:
            q, w = q * q + w * w, q * w * 2 + w * w
            n //= 2
    return e

(Конечно же это придумал не я. А жаль. Идея довольно красивая.)

Исходная версия i-rinat, :

А какие еще варианты функции, вычисляющей числа Фибоначчи приходят вам в голову?

def fib(n):
    q, w, e, r = 0, 1, 0, 1
    n += 1
    while (n > 0):
        if n & 1:
            e, r = q * e + w * r, w * e + (q + w) * r
            n -= 1
        else:
            q, w = q * q + w * w, q * w * 2 + w * w
            n //= 2
    return e

(Конечно же это придумал не я. А жаль. Идея довольно красивая.)