Skip to content

Recursion vs iteration

Both recursion and iteration can solve repetitive problems. Choose based on clarity and performance constraints.

AspectRecursionIteration
MemoryUses stack (each call adds a frame)Uses fixed memory (loop variables)
PerformanceOverhead of function callsGenerally faster (no call overhead)
RiskStack overflow for deep recursionNo stack overflow
ReadabilityElegant for tree‑like problems (e.g., file system, divide & conquer)Better for simple, linear problems
Code sizeOften shorterUsually longer

Example – factorial (recursion vs iteration):

// Recursive
int factRec(int n) {
if (n <= 1) return 1;
return n * factRec(n - 1);
}
// Iterative
int factIter(int n) {
int result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}

When to use recursion:

  • Tree/graph traversal
  • Backtracking (e.g., maze solving, N‑Queens)
  • Divide and conquer (merge sort, quick sort)
  • Problems with recursive definition (Fibonacci, factorial)

When to use iteration:

  • Simple loops over arrays/collections
  • Performance‑critical code
  • When depth is large or unknown

Hybrid approach: Use recursion for clarity, but convert to iteration with explicit stack if needed for performance.