Memoization

The purpose of memoization is to remember(cache) the results of functions so when it recurs the function does not have to redo all of the functions it did before to get to the next point.