Hey guys, Below is a code snippet for the fibonacci sequence with 'memoization', a technique that stores the results of previous calls to a function so that the function can return the stored result instead of recalculating the result. This makes executing the fibonacci sequence much more efficient. template idx(): untyped = if n == 0: 0 else: n-1 func fib(n: Natural; memo: var seq[int]): Natural = if memo[idx] != -1: return memo[idx] if n == 0 or n == 1: result = 1 else: result = fib(n - 1, memo) + fib(n - 2, memo) memo[idx] = result let startTime = epochTime() var memo = newSeqWith(91, -1) echo fib(91, memo) let endTime = epochTime() echo "elapsed time: " & $(endTime - startTime) Run
If you run the code snippet it'll work but if you change the `91` to `92` inside of the `newSeqWith` and `fib` procs, it'll raise an error: `Error: unhandled exception: over- or underflow [OverflowDefect]` Why would I get this error and what does this mean?