• in
InterCourses
CoursesBlogs
0
← Introduction to JavaScript
○What is JavaScript?○Your First JavaScript Code○Data Types○Type Checking
○Declaring Variables○let and const in Practice○Operators○Type Conversion
○Conditionals○Switch Statement○For Loops○While Loop○Break and Continue
○Defining Functions○Arrow Functions○Scope○Closures○Project - Calculator○Function Expressions
○Arrays○Array Mutation Methods○Array Search and Slice○Array Iteration Methods○Multidimensional Arrays○Destructuring○Array Reverse and Sort○Array Fill○Array Find and Includes○Array Flat and FlatMap○Array Reduce, Some, and Every
○Objects○Object Methods and Destructuring○JSON○Math and Date○Date Basics
○02 Template Literals○String Methods○Regular Expressions
○Higher-Order Functions○Callbacks○map, filter, and reduce●Recursion○Project - Data Transform Pipeline
○OOP Introduction○Classes○Inheritance○Encapsulation
○Asynchronous JavaScript○Promises and Async Await○Async API Simulation

Recursion

Recursion is when a function calls itself to solve a smaller version of the same problem. Every recursive solution needs:

  1. Base case — the simplest input that can be answered directly (stops the recursion).
  2. Recursive case — breaks the problem into a smaller sub-problem.

Factorial

javascript
function factorial(n) {
    if (n <= 1) return 1;          // base case
    return n * factorial(n - 1);  // recursive case
}

factorial(5); // 5 * 4 * 3 * 2 * 1 = 120

Fibonacci

javascript
function fib(n) {
    if (n === 0) return 0;
    if (n === 1) return 1;
    return fib(n - 1) + fib(n - 2);
}

fib(10); // 55

Recursive sum

javascript
function sum(arr) {
    if (arr.length === 0) return 0;
    return arr[0] + sum(arr.slice(1));
}

Flatten a nested array

javascript
function flatten(arr) {
    return arr.reduce((flat, item) =>
        Array.isArray(item) ? flat.concat(flatten(item)) : flat.concat(item),
    []);
}

flatten([1, [2, [3, [4]]]]); // [1, 2, 3, 4]

Your Task

  1. Write a recursive function power(base, exp) that returns base raised to the power exp (without using Math.pow). Base case: exp === 0 → return 1.
  2. Write a recursive function flatten(arr) that deeply flattens a nested array.
  3. Display in #output: "2^10 = 1024 | flatten: 1,2,3,4,5".
Hint 1
1 / 3
HINT 1

Every recursive function needs a base case that stops the recursion.

Loading editor…
READY
intercourses
javascript