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, where two mathematical objects are defined in terms of one another. Memoization can allow mutual recursion operations to be computed easier, but not necessarily faster.
In some logical programming languages, memoization may be called tabling because it is used as a technique to populate a lookup table.
Function call, Programming terms