# [Divide and conquer algorithms](https://en.wikipedia.org/wiki/Divide_and_conquer_algorithm)

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.

The correctness of a divide and conquer algorithm is usually proved by 
_mathematical induction_, and its computational cost is often determined by 
solving _recurrence relations_.

## Important concepts

- [Recursion](https://en.wikipedia.org/wiki/Recursion_(computer_science))
- Sub-problems
- [Mathematical induction](https://en.wikipedia.org/wiki/Mathematical_induction)
- [Recurrence relations](https://en.wikipedia.org/wiki/Recurrence_relation)
- [Master theorem](https://en.wikipedia.org/wiki/Master_theorem)

### Resources

- [https://brilliant.org/wiki/master-theorem/](https://brilliant.org/wiki/master-theorem/)