Code Example:
Function Definition
def memo(val, cache={}):
def memo(val, cache={}):
Defines a function named memo that takes two parameters:
val: A value to be processed.
cache: A dictionary used to store previously computed results.
Note: Using a mutable default argument (cache={}) means the same dictionary persists across function calls. This is key to how memoization works here.
Check if Value is Cached
if val in cache:
return f"Cached: {cache[val]}"
Checks if val is already a key in the cache dictionary:
If it is, return a string showing the cached result.
Example: If val is 2 and it's already in cache, return something like "Cached: 4".
Compute and Store New Value
cache[val] = val * 2
If val is not in the cache:
Compute val * 2.
Store it in the dictionary with val as the key.
For val = 2, it stores 2: 4.
Return Computed Result
return f"Computed: {cache[val]}"
After storing the new value in the cache, return a string like "Computed: 4" indicating a fresh computation.
Function Calls
print(memo(2))
print(memo(2))
First call: memo(2)
2 is not in cache → computes 2 * 2 = 4, stores it → returns "Computed: 4".
Second call: memo(2)
2 is now in cache → returns "Cached: 4".
Output
Computed: 4
Cached: 4


0 Comments:
Post a Comment