Divide and Conquer is an algorithmic approach that primarily employs recursion. Some can be solved using iteration. Dynamic Programming is another algorithmic approach where the algorithm uses memory to store previous solutions and compute in a faster manner. Dynamic programming employs almost all algorithmic approaches.
For example, Binary Search is a Divide and Conquer algorithm, we never evaluate the same subproblems again. On the other hand, for calculating the nth Fibonacci number, Dynamic Programming should be preferred.