Only cache repeats
Memoization pays off when the same argument is computed many times. If each argument is used once, a cache only wastes memory.
Pure calls only
A cached call must give the same answer for the same argument. If it reads changing state, the cache is wrong.