Recursion is a problem solving technique which involves breaking a problem into smaller instances of the same problem (also called as subproblems) until we get small enough subproblem that has a trivial solution. We can say that recursion is “defining a problem in terms of itself” as it involves a function calling itself with a base case to terminate the infinite loop.

Recursion is important concept in computer science and very powerful tool in writing algorithms. It allows us to write very elegant solutions to problems that may otherwise be very difficult to implement iteratively. It might be little confusing and difficult to understand, especially for the beginners but once you understand it, a whole new world of programming will open for you. Recursion just takes practice to get good at and nothing is more interesting than finding a solution to a problem the *recursive* way.

#### Backtracking –

#### Strings –

#### Array –

#### Matrix –

#### Divide & Conquer –

#### Linked List –

#### Sorting –

#### Heap –

#### Binary Tree –

#### Binary Search Tree –

#### Dynamic Programming –

#### Programming puzzles –

#### Graphs –

#### Misc –

**Thank you for being with us. 🙂**

## Leave a Reply

Hey, great work guys.. But it would be better if we can have more questions that focus on exhaustive recursion.. For example, the naive approach to the Painter’s Partition Problem or this question, for instance :

Given a pattern string like “ABBA” and an input string like “redbluebluered”, return true if and only if there’s a one to one mapping of letters in the pattern to substrings of the input.