Memoization is a technique used in computer programming wherein a program "remembers" the result of a computationally expensive function call by storing it in a cache. If the function is called later using the same inputs, the result is loaded from the cache rather than being recomputed, saving CPU resources.
In some cases, memoization may give a benefit other than speed. One example is mutual recursion, in which two mathematical objects are defined in terms of one another. Memoization can allow mutual recursion operations to be computed easier, but not necessarily more quickly.
In some logical programming languages, memoization may be referred to as tabling because it is used as a technique to populate a lookup table.