https://github.com/ahmadjajja/recursion-nd-backtracking
Beyond Basics: Mastering Advanced Recursion & Backtracking Techniques || Workshop
https://github.com/ahmadjajja/recursion-nd-backtracking
recursion recursion-algorithm recursion-problem recursion-tree recursion-tree-visualiser recursive recursive-functions
Last synced: 3 months ago
JSON representation
Beyond Basics: Mastering Advanced Recursion & Backtracking Techniques || Workshop
- Host: GitHub
- URL: https://github.com/ahmadjajja/recursion-nd-backtracking
- Owner: Ahmadjajja
- Created: 2024-02-25T11:41:20.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-03T21:51:31.000Z (over 1 year ago)
- Last Synced: 2025-01-21T21:33:02.493Z (5 months ago)
- Topics: recursion, recursion-algorithm, recursion-problem, recursion-tree, recursion-tree-visualiser, recursive, recursive-functions
- Language: JavaScript
- Homepage:
- Size: 5.69 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mastering Recursion & Backtracking Techniques
### Day 1 Recording
[Watch Day 1 Recording](https://www.facebook.com/iCodeguru/videos/921638522962563/)### Day 2 Recording
[Watch Day 2 Recording](https://www.facebook.com/iCodeguru/videos/387935694027781/)## Introduction
Recursion is a programming technique that allows a function to call itself repeatedly. It's particularly useful for solving problems that have a recursive structure.## How Recursion Works
1. Recursion involves a function calling itself.
2. This process continues until a base case is reached, upon which the recursion stops.
3. Each recursive call contributes to solving a smaller instance of the problem until the base case is met.## Steps to Understand and Approach a Problem
1. Identify if a problem can be broken down into smaller problems.
2. Formulate the recurrence relation, if needed.
3. Visualize the recursive tree.
4. Analyze the function flow:
- Understand the stack behavior.
- Focus on left and right tree calls.
- Utilize pen and paper to draw trees and pointers repeatedly.
5. Observe value returns at each step and identify the exit points.## When to Use Recursion
Use recursion when the problem has a recursive structure and can be broken down into similar subproblems.## When Not to Use Recursion
Avoid recursion for problems lacking a recursive structure, as it can lead to inefficiency.## Benefits of Recursion
- Concise and understandable code.
- Efficient solution for problems with recursive structure.# Recursion Problems
## Easy
- [Sum Triangle from Array](https://www.geeksforgeeks.org/sum-triangle-from-array/) `GFG`
- [Maximum and Minimum value in an array](https://www.geeksforgeeks.org/recursive-programs-to-find-minimum-and-maximum-elements-of-array/) `GFG`
- [Binary Search using recursion](https://leetcode.com/problems/binary-search/) `leetcode`
- [First Uppercase Letter in a String](https://www.geeksforgeeks.org/first-uppercase-letter-in-a-string-iterative-and-recursive/) `GFG`
- [Reverse String](https://leetcode.com/problems/reverse-string/) `leetcode`
- [Print 1 To N Without Loop](https://practice.geeksforgeeks.org/problems/print-1-to-n-without-using-loops-1587115620/1/) `GFG`
- [Fibonacci Number](https://leetcode.com/problems/fibonacci-number/) `leetcode`
- [Special Fibonacci](https://www.codechef.com/problems/FIBXOR01/) `CodeChef`
- [Length of string using Recursion](https://www.geeksforgeeks.org/program-for-length-of-a-string-using-recursion/) `GFG`
- [Geek-onacci Number](https://practice.geeksforgeeks.org/problems/geek-onacci-number/0/) `GFG`
- [Recursive Bubble Sort](https://www.geeksforgeeks.org/recursive-bubble-sort/) `GFG`
- [Recursive Insertion Sort](https://www.geeksforgeeks.org/recursive-insertion-sort/) `GFG`
- [Sum of digit of a number using Recursion](https://www.geeksforgeeks.org/sum-digit-number-using-recursion/) `GFG`
- [Product of two numbers using Recursion](https://www.geeksforgeeks.org/product-2-numbers-using-recursion/) `GFG`
- [Check Prime or not](https://www.geeksforgeeks.org/recursive-program-prime-number/) `GFG`
- [Sum of Natural numbers using Recursion](https://www.geeksforgeeks.org/sum-of-natural-numbers-using-recursion/) `GFG`
- [Power of Two](https://leetcode.com/problems/power-of-two/) `leetcode`
- [Power of Three](https://leetcode.com/problems/power-of-three/) `leetcode`
- [Power of Four](https://leetcode.com/problems/power-of-four/) `leetcode`
- Write a recursive function for given n and a to determine x:
```java
n = a ^ x
a = 2, 3, 4
(2 ^ -31) <= n <= (2 ^ 31) - 1
```
- [Write a recursive function that returns the factorial of a number.](https://www.hackerrank.com/challenges/30-recursion/problem) `HackerRank`
- [Write a recursive function to check whether an array is sorted or not.](https://www.geeksforgeeks.org/program-check-array-sorted-not-iterative-recursive) `GFG`
- [Number of Steps to Reduce a Number to Zero.](https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/) `leetcode`
- [Check for balanced paranthesis using recursion without stack.](https://www.geeksforgeeks.org/check-for-balanced-parenthesis-without-using-stack/) `GFG`
- [Remove consecutive duplicate characters from a string.](https://www.geeksforgeeks.org/remove-consecutive-duplicates-string/) `GFG`
- [Print all possible palindromic partitions of a string.](https://www.geeksforgeeks.org/given-a-string-print-all-possible-palindromic-partition/) `GFG`
- [Power Set of permutations of a string in Lexicographic order.](https://www.geeksforgeeks.org/powet-set-lexicographic-order/) `GFG`## Medium
- [Combination Sum](https://leetcode.com/problems/combination-sum/) `leetcode`
- [Word Search](https://leetcode.com/problems/word-search/) `leetcode`
- [Target sum](https://leetcode.com/problems/target-sum/) `leetcode`
- [Find Kth Bit in Nth Binary String](https://leetcode.com/problems/find-kth-bit-in-nth-binary-string/) `leetcode`
- [K-th Symbol in Grammar](https://leetcode.com/problems/k-th-symbol-in-grammar/) `leetcode`
- [Count Good Numbers](https://leetcode.com/problems/count-good-numbers/) `leetcode`
- [N Digit numbers with digits in increasing order](https://practice.geeksforgeeks.org/problems/n-digit-numbers-with-digits-in-increasing-order5903/1/) `GFG`
- [Pow(x, n)](https://leetcode.com/problems/powx-n/) `leetcode`
- [Minimum Non-Zero Product of the Array Elements](https://leetcode.com/problems/minimum-non-zero-product-of-the-array-elements/) `leetcode`
- [Handshakes](https://practice.geeksforgeeks.org/problems/handshakes1303/1/) `GFG`
- [HackerRank](https://www.hackerrank.com/domains/algorithms?filters%5Bsubdomains%5D%5B%5D=recursion&filters%5Bdifficulty%5D%5B%5D=medium)
- [Divisible Subset](https://www.codechef.com/problems/DIVSUBS) `Codechef`
- [Perfect squares](https://leetcode.com/problems/perfect-squares/)`leetcode`
- [decode string](https://leetcode.com/problems/decode-string/)`leetcode`
- [find the winner of the circular game](https://leetcode.com/problems/find-the-winner-of-the-circular-game/) `leetcode`
- [Different ways to add parantheses in the expression](https://leetcode.com/problems/different-ways-to-add-parentheses/) `leetcode`
- [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) `leetcode`
- [Predict the winner.](https://leetcode.com/problems/predict-the-winner/) `leetcode`
- [Gray code](https://practice.geeksforgeeks.org/problems/gray-code-1611215248/1/) `GFG` `Google`
- [Combination Sum II](https://leetcode.com/problems/combination-sum-ii/) `leetcode`
- [combination Sum III](https://leetcode.com/problems/combination-sum-iii/) `leetcode`
- [Sudoku Solver](https://leetcode.com/problems/sudoku-solver/) `leetcode`
- [Letter tile possibilities](https://leetcode.com/problems/letter-tile-possibilities/) `leetcode`
- [All Paths From Source to Target](https://leetcode.com/problems/all-paths-from-source-to-target/) `leetcode`
- [Sort a stack using recursion](https://www.geeksforgeeks.org/sort-a-stack-using-recursion/) `GFG`
- [Reverse a stack using recursion](https://www.geeksforgeeks.org/reverse-a-stack-using-recursion/) `GFG`
- [Beautiful Arrangement](https://leetcode.com/problems/beautiful-arrangement/) `leetcode`
- [Lowest Common Ancestor of a Binary Tree](https://practice.geeksforgeeks.org/problems/lowest-common-ancestor-in-a-binary-tree/1/) `GFG` `Amex`
- [Prime numbers after prime P with sum S](https://www.geeksforgeeks.org/prime-numbers-after-prime-p-with-sum-s/) `GFG`
- [Path with Maximum Gold](https://leetcode.com/problems/path-with-maximum-gold/) `leetcode`
- [Longest Possible Route in a Matrix with Hurdles](https://www.geeksforgeeks.org/longest-possible-route-in-a-matrix-with-hurdles/) `GFG`
- [Tug of war](https://www.geeksforgeeks.org/tug-of-war/) `GFG` `Adobe`
- [Rat in a maze](https://www.geeksforgeeks.org/rat-in-a-maze-backtracking-2/) `GFG`
- [Reorder List](https://leetcode.com/problems/reorder-list/) `leetcode`## Hard
- [Parsing A Boolean Expression](https://leetcode.com/problems/parsing-a-boolean-expression/) `leetcode`
- [Special Binary String](https://leetcode.com/problems/special-binary-string/) `leetcode`
- [Permutation Sequence](https://leetcode.com/problems/permutation-sequence/) `leetcode`
- [Next Happy Number](https://practice.geeksforgeeks.org/problems/next-happy-number4538/1/) `GFG`
- [Basic Calculator](https://leetcode.com/problems/basic-calculator/) `leetcode`
- [Integer to English Words](https://leetcode.com/problems/integer-to-english-words/) `leetcode`
- [Maximize Number of Nice Divisors](https://leetcode.com/problems/maximize-number-of-nice-divisors/) `leetcode`
- [N Queens](https://leetcode.com/problems/n-queens/) `leetcode`
- [N Queens II](https://leetcode.com/problems/n-queens-ii/) `leetcode`
- [Word break II](https://leetcode.com/problems/word-break-ii/) `leetcode` `Google`
- [Unique paths III](https://leetcode.com/problems/unique-paths-iii/) `leetcode`
- [Find shortest safe route in a path with landmines](https://www.geeksforgeeks.org/find-shortest-safe-route-in-a-path-with-landmines/) `GFG` `Google`
- [Minimum steps to destination](https://practice.geeksforgeeks.org/problems/minimum-number-of-steps-to-reach-a-given-number5234/1/) `GFG` `Amex` `Adobe`
- [Hamiltonian Cycle](https://www.geeksforgeeks.org/hamiltonian-cycle-backtracking-6/) `GFG`
- [M colorning problem](https://www.geeksforgeeks.org/m-coloring-problem-backtracking-5/) `GFG`
- [The Knight's tour](https://www.geeksforgeeks.org/the-knights-tour-problem-backtracking-1/) `GFG`
- [Maximum number possible by doing at-most K swaps](https://www.geeksforgeeks.org/find-maximum-number-possible-by-doing-at-most-k-swaps/) `GFG`
- [HackerRank](https://www.hackerrank.com/domains/algorithms?filters%5Bsubdomains%5D%5B%5D=recursion&filters%5Bdifficulty%5D%5B%5D=hard)
- [Concatenated Words](https://leetcode.com/problems/concatenated-words/)`leetcode`