#100DaysOfCodeChallenge

:repeat: Day 69 | Understanding Recursion in DSA (Beginner Friendly)

When you’re just starting your journey into Data Structures and Algorithms (DSA), one of the first powerful tools you’ll encounter is recursion. At first, it might seem confusing — functions calling themselves? But once you understand it, recursion becomes an elegant way to solve many complex problems with concise code.

:seedling: What is Recursion?

Recursion is a method where the solution to a problem depends on solving smaller instances of the same problem.

In simple terms, a recursive function is one that calls itself.

To prevent infinite loops, every recursive function must have:

Base Case: The condition that stops the recursion.

Recursive Case: The part where the function calls itself with a smaller input.

:brain: Example: Factorial

python

def factorial(n):

if n == 0:         # Base case

    return 1

return n * factorial(n - 1)  # Recursive call

Calling factorial(5) will result in:

5 * 4 * 3 * 2 * 1 = 120

:gear: How Recursion Works (Call Stack)

Each recursive call is pushed onto the call stack, and the function resumes after each inner call returns. This is why understanding stack memory is important — too many calls can lead to a stack overflow.

:cyclone: Visualization

ruby

CopyEdit

factorial(3)

=> 3 * factorial(2)

    => 2 * factorial(1)

            => 1 * factorial(0)

                    => 1

As the calls resolve, they “unwind” from the stack.

:jigsaw: When to Use Recursion

Recursion is ideal when:

A problem can be broken down into similar subproblems.

The problem naturally fits a divide-and-conquer approach.

The problem involves tree/graph traversal, permutations, or backtracking.

But keep in mind: recursion isn’t always efficient. Sometimes an iterative solution is better due to space concerns.

:bulb: Tips to Master Recursion

Write down the base case before the recursive logic.

Use print statements to trace recursive calls.

Practice dry-running your function on paper.

Learn to convert recursive logic to iterative, and vice versa.

Final Thoughts

Recursion is a pillar of problem-solving in computer science. It helps you think recursively, which is essential for topics like divide and conquer, trees, and backtracking. Start with easy problems and gradually build up to more complex challenges. And most importantly, don’t be afraid of recursion — embrace it!

100daysofcode lebanon-mug