| 1 | Call fib(4) | 4 | [None, None, None, None, None] | fib(3), fib(2) | [None, None, None, None, None] | pending |
| 2 | Call fib(3) | 3 | [None, None, None, None, None] | fib(2), fib(1) | [None, None, None, None, None] | pending |
| 3 | Call fib(2) | 2 | [None, None, None, None, None] | fib(1), fib(0) | [None, None, None, None, None] | pending |
| 4 | Call fib(1) | 1 | [None, None, None, None, None] | none | [None, None, None, None, None] | 1 |
| 5 | Call fib(0) | 0 | [None, None, None, None, None] | none | [None, None, None, None, None] | 0 |
| 6 | Compute fib(2) | 2 | [None, None, None, None, None] | fib(1)=1 + fib(0)=0 | [None, None, Some(1), None, None] | 1 |
| 7 | Call fib(1) | 1 | [None, None, Some(1), None, None] | none | [None, None, Some(1), None, None] | 1 |
| 8 | Compute fib(3) | 3 | [None, None, Some(1), None, None] | fib(2)=1 + fib(1)=1 | [None, None, Some(1), Some(2), None] | 2 |
| 9 | Call fib(2) | 2 | [None, None, Some(1), Some(2), None] | memo hit | [None, None, Some(1), Some(2), None] | 1 |
| 10 | Compute fib(4) | 4 | [None, None, Some(1), Some(2), None] | fib(3)=2 + fib(2)=1 | [None, None, Some(1), Some(2), Some(3)] | 3 |
| 11 | Return final result | 4 | [None, None, Some(1), Some(2), Some(3)] | none | [None, None, Some(1), Some(2), Some(3)] | 3 |