Matrix multiplication is a classic example of a divide-and-conquer algorithm. Suppose you want to multiply two n-by-n matrices A and B. A naive approach would be to use the definition of matrix multiplication and compute each element of the product matrix C by multiplying and adding n elements from A and B. This would take O(n^3) time. However, you can do better by dividing each matrix into four n/2-by-n/2 submatrices and applying the same algorithm recursively. This would result in a recurrence relation of the form T(n) = 8T(n/2) + O(n^2), where the 8 comes from the fact that you need to multiply eight pairs of submatrices, and the O(n^2) comes from the fact that you need to add four n/2-by-n/2 matrices to get the final result. Applying the master theorem to this recurrence relation, you can find that T(n) = O(n^3), which is the same as the naive approach. However, you can do even better by using a clever algorithm called Strassen's algorithm, which reduces the number of submatrix multiplications from eight to seven, resulting in a recurrence relation of the form T(n) = 7T(n/2) + O(n^2). Applying the master theorem to this recurrence relation, you can find that T(n) = O(n^log_2(7)), which is approximately O(n^2.81), which is faster than the naive approach.