История изменений
Исправление 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
(Конечно же это придумал не я. А жаль. Идея довольно красивая.)