I have a function that checks Fibonacci numbers for even.
def fibonacci(num=4):
fib1 = fib2 = 1
print(0, end=' ')
for i in range(1, num):
fib1, fib2 = fib2, fib1 + fib2
if (fib2 % 2) == 0:
print(fib2, end=' ')
fibonacci()
I need it to output a specified number of even numbers
Example input: 4
Example output: 0 2 8 34
You could just go over the even ones directly:
def fibonacci(num=4):
fib1, fib2 = 1, 0
for _ in range(num):
print(fib2, end=' ')
fib1, fib2 = fib1 + 2*fib2, 2*fib1 + 3*fib2
Consider two adjacent Fibonacci numbers a
and b
(initially 1 and 0) and what happens when you shift the window:
a b # odd even
b a+b # even odd
a+b a+2b # odd odd
a+2b 2a+3b # odd even
So every third Fibonacci number is even and that last line also tells you how to shift by three steps directly.