A way to solve problems which exhibit a specific structure (optimal substructure) where a problem can be broken down into sub-problems which are similar to the original one.
Difference with recursion
Clearly one can use recursion to solve a DP but it is not necessary