In computer science, divide and conquer is an algorithm design paradigm based on multi-branched recursion. A divide-and-conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem. This divide-and-conquer technique is the basis of efficient algorithms for all kinds of problems, such as sorting (quicksort, merge sort), multiplying large numbers (the Karatsuba algorithm), finding the closest pair of points, syntactic analysis ( top-down parsers), and computing the discrete Fourier transform (FFT). Divide and conquer is a powerful tool for solving conceptually difficult problems: all it requires is a way of breaking the problem into sub-problems, of solving the trivial cases and of combining sub-problems to the original problem. The divide-and-conquer paradigm often helps in the discovery of efficient algorithms. So it is very important algorithm in programming.