# Recurrence Relations

In algorithm analysis, recurrence relations are equations that describe the time complexity of a recursive algorithm. A recurrence relation defines a function in terms of its value at smaller inputs. Recurrence relations are commonly used to analyze divide-and-conquer algorithms, such as Quick Sort, Merge Sort, and Binary Search.

Here is an example of a recurrence relation:

``T(n) = 2T(n/2) + n``

This recurrence relation describes the time complexity of a divide-and-conquer algorithm that splits an array of size `n` into two subarrays of size `n/2` each, recursively sorts each subarray, and then merges the sorted subarrays together. The recurrence relation says that the time complexity `T(n)` of the algorithm is twice the time complexity of sorting a subarray of size `n/2`, plus the time complexity of merging two sorted subarrays of size `n/2`, which takes linear time proportional to `n`.

To solve this recurrence relation, we can use the Master Theorem, which provides a general formula for solving recurrence relations of the form:

``T(n) = aT(n/b) + f(n)``

where `a` and `b` are constants, and `f(n)` is a function that represents the time complexity of combining the subproblems.

In our example, a = 2, b = 2, and f(n) = n. Therefore, we can apply the Master Theorem to get the time complexity of the algorithm:

``T(n) = Θ(n log n)``

This means that the time complexity of the algorithm is proportional to n multiplied by the logarithm of n.

Recurrence relations are a powerful tool for analyzing the time complexity of recursive algorithms. They provide a mathematical way to express the time complexity in terms of smaller subproblems, which can help us understand the behavior of the algorithm and optimize its performance.

We hope this article helped you to understand about Concept of Recurrence Relations in a very detailed way.

Online Web Tutor invites you to try Skillshike! Learn CakePHP, Laravel, CodeIgniter, Node Js, MySQL, Authentication, RESTful Web Services, etc into a depth level. Master the Coding Skills to Become an Expert in PHP Web Development. So, Search your favourite course and enroll now.