Skip to content

Commit cf6ba23

Browse files
committed
implement closure-scoped memoization for fibonacci
1 parent f13588d commit cf6ba23

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,21 @@
11
def fibonacci(n):
2-
if n <= 1:
3-
return n
4-
return fibonacci(n - 1) + fibonacci(n - 2)
2+
# Initialize the cache dictionary
3+
cache = {}
4+
5+
def helper(number):
6+
# Check the cache at the start
7+
if number in cache:
8+
return cache[number]
9+
10+
# Base case
11+
if number <= 1:
12+
return number
13+
14+
# Compute the result (making sure number decreases!)
15+
result = helper(number - 1) + helper(number - 2)
16+
17+
# Store the result in the cache right before returning
18+
cache[number] = result
19+
return result
20+
21+
return helper(n)

0 commit comments

Comments
 (0)