From cac67889459e954376b5cdcb69f16445c293ea7b Mon Sep 17 00:00:00 2001 From: Moony Date: Wed, 7 Jul 2021 19:38:33 -0700 Subject: [PATCH] Initial commit. --- fib_challenge.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 fib_challenge.py diff --git a/fib_challenge.py b/fib_challenge.py new file mode 100644 index 0000000..b93f794 --- /dev/null +++ b/fib_challenge.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + + +def fib(n): + if n >= 0: + return fibiter(1, 0, 0, 1, n) + if n < 0: + a, b = 0, 1 + for _ in range(0, n, -1): + a, b = b - a, a + return a + + +def fibiter(a, b, p, q, count): + if count == 0: + return b + if count % 2 == 0: + return fibiter(a, b, p * p + q * q, q * q + 2 * p * q, count / 2) + else: + return fibiter(b * q + a * q + a * p, b * p + a * q, p, q, count - 1) + + +print(fib(1000000))