@@ -27,6 +27,20 @@ def fib(n: int) -> int:
27
27
28
28
return Fibonacci .fib (n - 2 ) + Fibonacci .fib (n - 1 )
29
29
30
+ @staticmethod
31
+ def fast_fib (n : int , cache : {int : int }) -> int :
32
+ """Fibonacci sequence algorithm utilizing dynamic programing and memoization"""
33
+ if n == 0 :
34
+ cache [n ] = 0
35
+ return 0
36
+
37
+ if n == 1 :
38
+ cache [n ] = 1
39
+ return 1
40
+
41
+ cache [n ] = cache [n - 2 ] + cache [n - 1 ]
42
+ return cache [n ]
43
+
30
44
31
45
# ---------------------------------------------------------------------------------------------------------
32
46
@@ -135,6 +149,8 @@ def main():
135
149
136
150
test_int_matrix = [[0 ] * 2 for _ in range (3 )]
137
151
152
+ cache = {}
153
+
138
154
for i in range (3 ):
139
155
for j in range (2 ):
140
156
test_int_matrix [i ][j ] = generator .randint (0 , 9 )
@@ -163,6 +179,12 @@ def main():
163
179
print ()
164
180
print (f"floor of lg(128): { lg (128 ) } " )
165
181
182
+ print ()
183
+ print ("- Dynamic Programming and Memoization Fib" )
184
+
185
+ for i in range (40 ):
186
+ print (Fibonacci .fast_fib (i , cache ))
187
+
166
188
print ()
167
189
print ("- Recursive Fib" )
168
190
0 commit comments