Data Structure and Algorithm
Algorithms
Recursion
Introduction

Introduction to Recursion

Recursion is a powerful concept in programming that allows us to solve complex problems by breaking them down into smaller, similar sub-problems. In JavaScript, recursion can often simplify tasks that would otherwise require lengthy and complicated loops.


What is Recursion?

Recursion is a process where a function calls itself, either directly or indirectly. A recursive function continues to call itself until it reaches a base condition, which stops the execution.

Recursion vs. Loops

While both recursion and loops are used for repetitive tasks, they work differently:

FeatureLoops (Iterative)Recursion
ApproachUses a control variable (like i) to repeat a block of code.Uses function calls to call the same block with smaller inputs.
DirectionGenerally unidirectional (e.g., from 1 to N).Bidirectional: Moves forward to base case, then unwinds backward.
MemoryMinimal overhead; uses same memory frame.Each call uses a new frame on the Call Stack.
Flow ControlUses break, continue, or condition.Relies on a base case to terminate.

Why use Recursion?

Recursion is particularly effective for problems that have a naturally recursive structure, such as:

  • Tree and Graph Traversal
  • Divide and Conquer Algorithms (like QuickSort and MergeSort)
  • Complex mathematical problems (like Tower of Hanoi or Fibonacci series)

Conclusion

Understanding recursion is essential for mastering advanced Data Structures and Algorithms (DSA). It requires a shift in mindset from iterative thinking to "functional" thinking, where the solution to a big problem depends on solving a smaller version of the same problem.