Facebook Pixel

Recursive Problems and Solutions in JavaScript

Common recursive problems with solutions: factorial, fibonacci, tree, flatten.

Recursive Problems and Solutions

Factorial

function factorial(n) { if (n <= 1) return 1; return n * factorial(n - 1); }

Fibonacci

function fib(n) { if (n < 2) return n; return fib(n - 1) + fib(n - 2); }

Flatten Nested Arrays

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

Tree Traversal (DFS)

function traverse(node, callback) { callback(node); if (node.children) node.children.forEach(child => traverse(child, callback)); }

Power

function power(base, exp) { if (exp === 0) return 1; return base * power(base, exp - 1); }

Reverse String

function reverse(str) { if (str.length <= 1) return str; return reverse(str.slice(1)) + str[0]; }

The Takeaway

Common recursive problems: factorial (n * factorial(n-1)), fibonacci (fib(n-1) + fib(n-2)), flatten (reduce + concat), tree traversal (forEach + recurse), power (base * power(base, exp-1)), and reverse string (recurse on slice + first char).

function flatten(arr) { return arr.reduce((acc, item) => acc.concat(Array.isArray(item) ? flatten(item) : item), []); }. If an item is an array, recurse. Otherwise, concatenate.

function traverse(node, callback) { callback(node); if (node.children) node.children.forEach(child => traverse(child, callback)); }. Call the callback on the current node, then recurse into each child.

function factorial(n) { if (n <= 1) return 1; return n * factorial(n - 1); }. Base case: 1 returns 1. Recursive case: n * factorial(n-1).

function reverse(str) { if (str.length <= 1) return str; return reverse(str.slice(1)) + str[0]; }. Take the first character, reverse the rest, and append the first character at the end.

O(2^n) - exponential. Each call makes two recursive calls, creating a binary tree of calls. Use memoization to reduce to O(n): const memo = {}; function fib(n) { if (n in memo) return memo[n]; ... }.

Ready to master React completely?

Want to upskill yourself, crack your next interview, and get your dream job? Join our comprehensive course to dive deeper with high-quality video tutorials, solve interview questions, and a premium community.

Please Login.
Please Login.
Please Login.
Please Login.