Skip to main content

39 docs tagged with "Recursion"

View all tags

Ackerman Function Using Recursion

The Ackermann function is a recursive function that grows incredibly fast and is often used to demonstrate the power and limitations of recursion. Defined with two arguments,m and n, it exhibits rapid growth even for small inputs, making it a classic example in theoretical computer science. Unlike simpler recursive functions, it is non-primitive recursive, meaning it cannot be expressed using basic loops. This function challenges computational limits, often exceeding recursion stack sizes in practical programming environments. Its main use is in studying recursion, computability, and the limits of algorithms.

Applications of Recursion

Applications of Recursion in various fields, including algorithm design, problem-solving, and real-world use cases.

Catalan Number Using Recursion

The Catalan number sequence is a cornerstone in combinatorics, often arising in problems like counting valid parentheses expressions, binary search trees, and polygon triangulations.

Dynamic Segment Tree

This post covers dynamic segment trees, their use-cases, code examples, and how they differ from regular segment trees.

Generate Fibonacci Sequence with Recursion

This post explores generating the Fibonacci sequence using recursion. We'll delve into the recursive approach and provide code implementations in multiple languages, including C++, Java, Python, JavaScript, and Go.

Generate Parentheses Recursion

The Generate Parentheses problem requires generating all combinations of well-formed parentheses given n pairs. The solution uses recursion and backtracking to ensure that each combination is valid.

Gray Code Generation Using Recursion

Gray code generation is a process of creating a sequence of binary numbers in which two successive values differ in only one bit. This unique property is useful in various applications, such as minimizing errors in digital communication and ensuring smooth transitions in analog-to-digital converters. The generation can be efficiently achieved using a recursive algorithm, which constructs Gray codes for 𝑛 by leveraging the codes generated for 𝑛−1 bits. The resulting Gray code sequences maintain a structured format, making them ideal for error detection and correction in digital systems

Josephus Problem Recursion

The Josephus problem is a theoretical problem related to a certain elimination game. It is often solved using recursion, where the goal is to determine the safe position in a group of people standing in a circle, eliminating every k-th person.

Josephus Queries Problem

In this post, we'll explore the Josephus Queries problem, where children are removed from a circle in a specific order. We will discuss the recursive approach to find out which child is removed at a given position and provide solutions in multiple languages such as C++, Java, Python, JavaScript, and Go. By the end, you'll understand how to efficiently determine the order of removals.

Knight's Tour Recursion

The Knight's Tour problem is a classic backtracking problem where the goal is to move a knight across an n×n chessboard such that it visits every square exactly once. The problem is often solved using backtracking and recursion.

Letter Combinations of a Phone Number

The Letter Combinations of a Phone Number problem involves generating all possible letter combinations that a string of digits (2-9) can represent based on a standard telephone keypad. This problem is often solved using recursion and backtracking.

Look and Say Recursion

The Look and Say sequence is a sequence of numbers where each term is generated by reading off the digits of the previous term. The sequence starts with 1, and each subsequent number describes the digits in the previous number. The problem can be solved recursively by processing each number and generating the next in the sequence.

Maximum Depth of a Binary Tree

This blog post covers how to find the maximum depth (or height) of a binary tree in C++, along with explanations and code examples.

Minimum Depth of a Binary Tree

This blog post covers how to find the minimum depth (or height) of a binary tree in C++, along with explanations and code examples.

Modular Exponentiation Algorithm

Modular Exponentiation is an algorithm used to efficiently compute large powers modulo a number, using a technique called exponentiation by squaring.

Mutual Recursion

An overview of mutual recursion and its applications in programming.

N Queen Recursion

The N-Queen problem is a classic combinatorial problem in which the goal is to place N queens on an N×N chessboard such that no two queens threaten each other. This means that no two queens can share the same row, column, or diagonal. The problem is often solved using backtracking, a form of recursion.

N-Queens Problem

The N-Queens problem is a classic backtracking problem where the objective is to place N queens on an N×N chessboard such that no two queens threaten each other.

Perfect sum

The Perfect Sum problem involves finding all subsets of an array that sum up to a given target sum. The solution uses recursion and dynamic programming to efficiently count subsets with a specified sum while handling large values using modulo.

Postfix to Infix conversion

Given a postfix expression construct a tree that stores operator as internal nodes and the opernads as leaves. On inorder traversal it gives the infix expression of the postfix.

Recursion data structure

Recursion is a programming technique where a function calls itself directly or indirectly in order to solve a larger problem by breaking it down into smaller, more manageable sub-problems. It is commonly used in algorithms involving divide and conquer strategies, tree traversal, and dynamic programming.

Reverse String Using Recursion

The Reverse String problem involves reversing a given string using a recursive function. The solution efficiently utilizes recursion to achieve the desired result without using any iterative constructs.

Smawk Algorithm Using Recursion

The SMAWK algorithm is an efficient method for finding row minima in totally monotone matrices, a specific type of matrix where entries decrease or stay constant along each row and column. Developed for optimizing complex search operations, this algorithm leverages a unique recursive approach, reducing computation time to O(m+n) for an m×n matrix, making it ideal for applications in computational geometry, dynamic programming, and machine learning. With SMAWK, developers gain a powerful tool for solving matrix-based problems more effectively, significantly improving the performance of algorithms that depend on finding minimum values in large, structured datasets

Stone Paper Scissor Game Using Recursion

Stone Paper Scissors is a classic hand game enjoyed by people of all ages around the world. In this engaging game, two players simultaneously choose one of three options: stone, paper, or scissors. The rules are simple: stone crushes scissors, scissors cut paper, and paper covers stone. This fast-paced game not only fosters friendly competition but also helps improve decision-making and strategic thinking skills. Often played in a best-of-three format, players aim to win two out of three rounds to determine the overall winner.

Sudoko Recursion

The Sudoku problem is a popular puzzle where the objective is to fill a 9x9 grid with digits from 1 to 9 so that each column, each row, and each of the nine 3x3 subgrids contain all the digits from 1 to 9 without repetition.

Tail Recursion

An overview of Tail Recursion and its applications in programming.

Towers of Hanoi Recursion

The Towers of Hanoi problem involves moving a stack of n disks from one rod to another, following specific rules. The problem is often solved using backtracking, a form of recursion.

Tree Recursion

An overview of Tree Recursion and its applications in programming.

Ulam Sequence Generation Via Recursion

The Recursive Ulam Sequence Generator is a feature that generates the Ulam sequence—a unique integer sequence—using a recursive algorithm. The Ulam sequence starts with two predefined numbers, 1 and 2, and each subsequent number is the smallest integer that can be expressed as the sum of two distinct earlier numbers in exactly one way. This feature provides a recursive approach to find Ulam numbers up to a given integer, maxN.

Unwinding in Recursion

Unwinding in recursion is the phase where recursive calls return back up the call stack, resolving each call step by step in reverse order

Vose Alias Method

The Recursive Vose's Alias Method is an efficient algorithm for fast random sampling from discrete probability distributions. With O(n) preprocessing and O(1) sampling, it's ideal for non-uniform distributions, widely used in areas like computer graphics, machine learning, and simulations. Perfect for applications needing quick, reliable sampling.

Water Jug Problem Using Recursion

The Recursive Water Jug Problem Solver is an engaging algorithmic approach to a classic puzzle involving two jugs of different capacities. This solver efficiently utilizes recursion to explore all possible states, allowing users to achieve a specific target volume of water through a series of defined operations, such as filling, pouring, and emptying the jugs. Ideal for computer science enthusiasts and learners, this solution highlights the power of recursive problem-solving techniques while demonstrating state management and optimization strategies. Whether you're looking to deepen your understanding of algorithms or tackle a fascinating combinatorial challenge, the Recursive Water Jug Problem Solver offers a practical and insightful experience.