Both in mathematics and in computer science Dynamic Programming is a well known concept. It is an algorithmic technique, which can be used to write efficient algorithms, based on the avoidance of multiple executions of identical subcomputations. Its definition in both disciplines is however quite different. The aim of this paper is to compare both definitions. It is shown that the computer science approach is more efficient, since it avoids the execution of unneeded subcomputations, whereas the mathematical approach has greater possibilities of reducing memory requirements.