Three Concepts need to be clear:
Is a method for solving complex problems by breaking them down into simpler subproblems. It is applicable to problems exhibiting the properties of overlapping subproblems which are only slightly smaller and optimal substructure (described below). When applicable, the method takes far less time than naïve methods.
Dynamic Programming Language:
Is a term used broadly in computer science to describe a class of high-level programming languages that execute at runtime many common behaviors that other languages might perform during compilation.
A programming language is said to be dynamically typed when the majority of its type checking is performed at run-time as opposed to at compile-time.