Skip to content

Commit 7145f6e

Browse files
author
Hiep Pham
committedMar 19, 2022
dynamic: add fibonacci's functools version
1 parent c18cb48 commit 7145f6e

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed
 

‎dynamic/fibonacci.py

+16-10
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1-
# ref: https://bit.ly/3nGmgOB
1+
import functools
2+
3+
4+
@functools.lru_cache
5+
def fib0(n):
6+
if n <= 1:
7+
return n
8+
return fib0(n - 1) + fib0(n - 2)
9+
210

311
D = dict()
412

513

6-
def fib(n):
7-
"""cache version. Similar to @functools.lru_cache
8-
"""
14+
def fib1(n):
15+
"""cache version. Similar to @functools.lru_cache"""
916
if n not in D:
1017
if n <= 1:
1118
D[n] = n
1219
else:
13-
D[n] = fib(n - 1) + fib(n - 2)
20+
D[n] = fib1(n - 1) + fib1(n - 2)
1421
return D[n]
1522

1623

1724
def fib2(n):
18-
"""Storage array
19-
"""
25+
"""Storage array"""
2026
T = [None] * (n + 1)
2127
T[0], T[1] = 0, 1
2228
for i in range(2, n + 1):
@@ -25,8 +31,7 @@ def fib2(n):
2531

2632

2733
def fib3(n):
28-
"""Super compact version
29-
"""
34+
"""Super compact version"""
3035
if n <= 1:
3136
return n
3237

@@ -38,6 +43,7 @@ def fib3(n):
3843

3944

4045
def test_fib():
41-
assert fib(10) == 55
46+
assert fib0(10) == 55
47+
assert fib1(10) == 55
4248
assert fib2(10) == 55
4349
assert fib3(10) == 55

‎dynamic/readme.org

+3
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@
1515
Time: O(ab), space: O(ab), where ~a = len(A), b = len(B)~
1616

1717
Ref: https://youtu.be/MiqoA-yF-0M
18+
19+
* Reference
20+
[[https://bit.ly/3nGmgOB][Competitve Programmer's core skills]]

0 commit comments

Comments
 (0)
Please sign in to comment.