Memoization (a.k.a tabling) is a technique in programming where the result of a function call is stored and when the function is subsequently called with the same parameters, the result is returned from the store instead of executing the function again.