Recursion is a programming technique where a function calls itself to solve smaller instances of the same problem. It’s elegant but tricky for beginners—let’s break it down with clear examples in Python, JavaScript, and Java.

What is Recursion?

You’re Not a Senior Developer Until You Have These 8 Traits

Recursion solves problems by:

  1. Base Case – The simplest scenario (stops recursion).
  2. Recursive Case – Breaking the problem into smaller subproblems.

Example: Factorial Calculation

See document.querySelector() vs. getElementById(): Which is Faster?

1. Python

def factorial(n):
if n == 1: # Base case
return 1
return n * factorial(n - 1) # Recursive case

print(factorial(5)) # Output: 120

2. JavaScript

function factorial(n) {
if (n === 1) return 1; // Base case
return n * factorial(n - 1); // Recursive case
}

console.log(factorial(5)); // Output: 120

3. Java

public class Main {
static int factorial(int n) {
if (n == 1) return 1; // Base case
return n * factorial(n - 1); // Recursive case
}

public static void main(String[] args) {  
    System.out.println(factorial(5));  // Output: 120  
}  
}

Another Example: Fibonacci Sequence

Python

def fibonacci(n):
if n <= 1: return n # Base case
return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(6)) # Output: 8

JavaScript

javascript
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}

console.log(fibonacci(6)); // Output: 8

3. Java

public class Main {
static int fibonacci(int n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}

public static void main(String[] args) {  
    System.out.println(fibonacci(6));  // Output: 8  
} 
}

When to Use Recursion?

Tree/Graph Traversal (e.g., binary search trees).
Divide & Conquer Algorithms (e.g., mergesort).
Problems with repetitive subproblems (but watch for inefficiency!).

Watch Out For:

Missing base case → Stack Overflow!
Exponential time complexity (e.g., naive Fibonacci).

Final Challenge

Try implementing a recursive sum of numbers from 1 to n in all three languages!

Recent Posts

API Design Principles

How to Build APIs That Are Easy to Use, Scale, and Maintain Learn on the…

15 hours ago

JavaScript vs Your Expectations

Almost everyone starts learning JavaScript with the wrong expectations. Let's fix them. Download the Codeflare…

1 week ago

Introduction to Phaser JS

Phaser JS is a powerful, open-source HTML5 game development framework used for creating 2D games that…

2 weeks ago

Web Authentication Libraries

JavaScript / Node.js Authentication Libraries 1. Passport.js One of the most popular authentication middleware libraries…

2 weeks ago

The Things They Carry: Software Developers Starter Packs

Every profession comes with its own set of tools. A carpenter has a toolbox, a…

2 weeks ago

CRUD Operations: The Foundation of Data Management

Every application that stores and manages data relies on a set of basic operations known…

4 weeks ago