It can be used to optimize the programs that use recursion. In python, memoization can be done with the help of function decorators.
But if recursion is used then there is a chance that the sub-problem that is already solved is being solved again, which adds to an overhead.