fib_array
# import sys if len(sys.argv) != 2:
# print('need argument')
# sys.exit()
# n = int(sys.argv[1])
n = 8
fib_array = [1, 1]
for i in range(2, n):
fib_array.append(fib_array[i - 1] + fib_array[i - 2])
print(fib_array)
output:
[1, 1, 2, 3, 5, 8, 13, 21]
recursive_fib
recursive_array = {}
def recursive_fib(n):
if n < 2:
return n
result = recursive_fib(n - 1) + recursive_fib(n - 2)
recursive_array[n] = result
return result
print(recursive_fib(8))
print([v for k, v in recursive_array.items()])
output:
21
[1, 2, 3, 5, 8, 13, 21]
memoize_fib
cache = {}
def memoize_fib(n):
if n < 2:
return n
if n in cache:
return cache[n]
result = memoize_fib(n - 1) + memoize_fib(n - 2)
cache[n] = result
return result
print(memoize_fib(8))
print([v for k, v in cache.items()])
output:
21
[1, 2, 3, 5, 8, 13, 21]
fibgen
def fibgen(n):
fib0 = 1
yield fib0
fib1 = 1
yield fib1
for i in range(n-2):
fib0, fib1 = fib1, fib0 + fib1
yield fib1
print([f for f in fibgen(8)][-1])
print([f for f in fibgen(8)])
output
21
[1, 1, 2, 3, 5, 8, 13, 21]