{"id":21258172,"url":"https://github.com/ahmadjajja/recursion-nd-backtracking","last_synced_at":"2025-03-15T06:24:23.321Z","repository":{"id":224384541,"uuid":"763034789","full_name":"Ahmadjajja/Recursion-nd-Backtracking","owner":"Ahmadjajja","description":"Beyond Basics: Mastering Advanced Recursion \u0026 Backtracking Techniques || Workshop","archived":false,"fork":false,"pushed_at":"2024-03-03T21:51:31.000Z","size":5967,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T21:33:02.493Z","etag":null,"topics":["recursion","recursion-algorithm","recursion-problem","recursion-tree","recursion-tree-visualiser","recursive","recursive-functions"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ahmadjajja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-25T11:41:20.000Z","updated_at":"2024-11-04T04:10:05.000Z","dependencies_parsed_at":"2024-02-25T17:31:09.088Z","dependency_job_id":"e0bcbecc-9710-448b-a0e4-5fb06e163488","html_url":"https://github.com/Ahmadjajja/Recursion-nd-Backtracking","commit_stats":null,"previous_names":["ahmadjajja/recursion-nd-backtracking"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmadjajja%2FRecursion-nd-Backtracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmadjajja%2FRecursion-nd-Backtracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmadjajja%2FRecursion-nd-Backtracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmadjajja%2FRecursion-nd-Backtracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ahmadjajja","download_url":"https://codeload.github.com/Ahmadjajja/Recursion-nd-Backtracking/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243691440,"owners_count":20331971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["recursion","recursion-algorithm","recursion-problem","recursion-tree","recursion-tree-visualiser","recursive","recursive-functions"],"created_at":"2024-11-21T04:07:37.594Z","updated_at":"2025-03-15T06:24:23.294Z","avatar_url":"https://github.com/Ahmadjajja.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mastering Recursion \u0026 Backtracking Techniques\n\n### Day 1 Recording\n[Watch Day 1 Recording](https://www.facebook.com/iCodeguru/videos/921638522962563/)\n\n### Day 2 Recording\n[Watch Day 2 Recording](https://www.facebook.com/iCodeguru/videos/387935694027781/)\n\n## Introduction\nRecursion is a programming technique that allows a function to call itself repeatedly. It's particularly useful for solving problems that have a recursive structure.\n\n## How Recursion Works\n1. Recursion involves a function calling itself.\n2. This process continues until a base case is reached, upon which the recursion stops.\n3. Each recursive call contributes to solving a smaller instance of the problem until the base case is met.\n\n\n## Steps to Understand and Approach a Problem\n1. Identify if a problem can be broken down into smaller problems.\n2. Formulate the recurrence relation, if needed.\n3. Visualize the recursive tree.\n4. Analyze the function flow:\n   - Understand the stack behavior.\n   - Focus on left and right tree calls.\n   - Utilize pen and paper to draw trees and pointers repeatedly.\n5. Observe value returns at each step and identify the exit points.\n\n## When to Use Recursion\nUse recursion when the problem has a recursive structure and can be broken down into similar subproblems.\n\n## When Not to Use Recursion\nAvoid recursion for problems lacking a recursive structure, as it can lead to inefficiency.\n\n## Benefits of Recursion\n- Concise and understandable code.\n- Efficient solution for problems with recursive structure.\n\n\n\n# Recursion Problems\n\n## Easy\n- [Sum Triangle from Array](https://www.geeksforgeeks.org/sum-triangle-from-array/) `GFG`\n- [Maximum and Minimum value in an array](https://www.geeksforgeeks.org/recursive-programs-to-find-minimum-and-maximum-elements-of-array/) `GFG`\n- [Binary Search using recursion](https://leetcode.com/problems/binary-search/) `leetcode`\n- [First Uppercase Letter in a String](https://www.geeksforgeeks.org/first-uppercase-letter-in-a-string-iterative-and-recursive/) `GFG`\n- [Reverse String](https://leetcode.com/problems/reverse-string/) `leetcode`\n- [Print 1 To N Without Loop](https://practice.geeksforgeeks.org/problems/print-1-to-n-without-using-loops-1587115620/1/) `GFG`\n- [Fibonacci Number](https://leetcode.com/problems/fibonacci-number/) `leetcode`\n- [Special Fibonacci](https://www.codechef.com/problems/FIBXOR01/) `CodeChef`\n- [Length of string using Recursion](https://www.geeksforgeeks.org/program-for-length-of-a-string-using-recursion/) `GFG`\n- [Geek-onacci Number](https://practice.geeksforgeeks.org/problems/geek-onacci-number/0/) `GFG`\n- [Recursive Bubble Sort](https://www.geeksforgeeks.org/recursive-bubble-sort/) `GFG`\n- [Recursive Insertion Sort](https://www.geeksforgeeks.org/recursive-insertion-sort/) `GFG`\n- [Sum of digit of a number using Recursion](https://www.geeksforgeeks.org/sum-digit-number-using-recursion/) `GFG`\n- [Product of two numbers using Recursion](https://www.geeksforgeeks.org/product-2-numbers-using-recursion/) `GFG`\n- [Check Prime or not](https://www.geeksforgeeks.org/recursive-program-prime-number/) `GFG`\n- [Sum of Natural numbers using Recursion](https://www.geeksforgeeks.org/sum-of-natural-numbers-using-recursion/) `GFG`\n- [Power of Two](https://leetcode.com/problems/power-of-two/) `leetcode`\n- [Power of Three](https://leetcode.com/problems/power-of-three/) `leetcode`\n- [Power of Four](https://leetcode.com/problems/power-of-four/) `leetcode`\n- Write a recursive function for given n and a to determine x:\n```java\n      n = a ^ x \n      a = 2, 3, 4\n      (2 ^ -31) \u003c= n \u003c= (2 ^ 31) - 1      \n```\n- [Write a recursive function that returns the factorial of a number.](https://www.hackerrank.com/challenges/30-recursion/problem) `HackerRank`\n- [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`\n- [Number of Steps to Reduce a Number to Zero.](https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/) `leetcode`\n- [Check for balanced paranthesis using recursion without stack.](https://www.geeksforgeeks.org/check-for-balanced-parenthesis-without-using-stack/) `GFG`\n- [Remove consecutive duplicate characters from a string.](https://www.geeksforgeeks.org/remove-consecutive-duplicates-string/) `GFG` \n- [Print all possible palindromic partitions of a string.](https://www.geeksforgeeks.org/given-a-string-print-all-possible-palindromic-partition/) `GFG`\n- [Power Set of permutations of a string in Lexicographic order.](https://www.geeksforgeeks.org/powet-set-lexicographic-order/) `GFG`\n\n## Medium\n- [Combination Sum](https://leetcode.com/problems/combination-sum/) `leetcode`\n- [Word Search](https://leetcode.com/problems/word-search/) `leetcode`\n- [Target sum](https://leetcode.com/problems/target-sum/) `leetcode`\n- [Find Kth Bit in Nth Binary String](https://leetcode.com/problems/find-kth-bit-in-nth-binary-string/) `leetcode`\n- [K-th Symbol in Grammar](https://leetcode.com/problems/k-th-symbol-in-grammar/) `leetcode`\n- [Count Good Numbers](https://leetcode.com/problems/count-good-numbers/) `leetcode`\n- [N Digit numbers with digits in increasing order](https://practice.geeksforgeeks.org/problems/n-digit-numbers-with-digits-in-increasing-order5903/1/) `GFG`\n- [Pow(x, n)](https://leetcode.com/problems/powx-n/) `leetcode`\n- [Minimum Non-Zero Product of the Array Elements](https://leetcode.com/problems/minimum-non-zero-product-of-the-array-elements/) `leetcode`\n- [Handshakes](https://practice.geeksforgeeks.org/problems/handshakes1303/1/) `GFG`\n- [HackerRank](https://www.hackerrank.com/domains/algorithms?filters%5Bsubdomains%5D%5B%5D=recursion\u0026filters%5Bdifficulty%5D%5B%5D=medium)\n- [Divisible Subset](https://www.codechef.com/problems/DIVSUBS)  `Codechef`\n- [Perfect squares](https://leetcode.com/problems/perfect-squares/)`leetcode`\n- [decode string](https://leetcode.com/problems/decode-string/)`leetcode`\n- [find the winner of the circular game](https://leetcode.com/problems/find-the-winner-of-the-circular-game/) `leetcode`\n- [Different ways to add parantheses in the expression](https://leetcode.com/problems/different-ways-to-add-parentheses/) `leetcode`\n- [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) `leetcode`\n- [Predict the winner.](https://leetcode.com/problems/predict-the-winner/) `leetcode`\n- [Gray code](https://practice.geeksforgeeks.org/problems/gray-code-1611215248/1/) `GFG` `Google`\n- [Combination Sum II](https://leetcode.com/problems/combination-sum-ii/) `leetcode`\n- [combination Sum III](https://leetcode.com/problems/combination-sum-iii/) `leetcode`\n- [Sudoku Solver](https://leetcode.com/problems/sudoku-solver/) `leetcode`\n- [Letter tile possibilities](https://leetcode.com/problems/letter-tile-possibilities/) `leetcode`\n- [All Paths From Source to Target](https://leetcode.com/problems/all-paths-from-source-to-target/) `leetcode`\n- [Sort a stack using recursion](https://www.geeksforgeeks.org/sort-a-stack-using-recursion/) `GFG`\n- [Reverse a stack using recursion](https://www.geeksforgeeks.org/reverse-a-stack-using-recursion/) `GFG`\n- [Beautiful Arrangement](https://leetcode.com/problems/beautiful-arrangement/) `leetcode`\n- [Lowest Common Ancestor of a Binary Tree](https://practice.geeksforgeeks.org/problems/lowest-common-ancestor-in-a-binary-tree/1/) `GFG` `Amex`\n- [Prime numbers after prime P with sum S](https://www.geeksforgeeks.org/prime-numbers-after-prime-p-with-sum-s/) `GFG`\n- [Path with Maximum Gold](https://leetcode.com/problems/path-with-maximum-gold/) `leetcode`\n- [Longest Possible Route in a Matrix with Hurdles](https://www.geeksforgeeks.org/longest-possible-route-in-a-matrix-with-hurdles/) `GFG`\n- [Tug of war](https://www.geeksforgeeks.org/tug-of-war/) `GFG` `Adobe`\n- [Rat in a maze](https://www.geeksforgeeks.org/rat-in-a-maze-backtracking-2/) `GFG`\n- [Reorder List](https://leetcode.com/problems/reorder-list/) `leetcode`\n\n## Hard\n- [Parsing A Boolean Expression](https://leetcode.com/problems/parsing-a-boolean-expression/) `leetcode`\n- [Special Binary String](https://leetcode.com/problems/special-binary-string/) `leetcode`\n- [Permutation Sequence](https://leetcode.com/problems/permutation-sequence/) `leetcode`\n- [Next Happy Number](https://practice.geeksforgeeks.org/problems/next-happy-number4538/1/) `GFG`\n- [Basic Calculator](https://leetcode.com/problems/basic-calculator/) `leetcode`\n- [Integer to English Words](https://leetcode.com/problems/integer-to-english-words/) `leetcode`\n- [Maximize Number of Nice Divisors](https://leetcode.com/problems/maximize-number-of-nice-divisors/) `leetcode`\n- [N Queens](https://leetcode.com/problems/n-queens/) `leetcode`\n- [N Queens II](https://leetcode.com/problems/n-queens-ii/) `leetcode`\n- [Word break II](https://leetcode.com/problems/word-break-ii/) `leetcode` `Google`\n- [Unique paths III](https://leetcode.com/problems/unique-paths-iii/) `leetcode`\n- [Find shortest safe route in a path with landmines](https://www.geeksforgeeks.org/find-shortest-safe-route-in-a-path-with-landmines/) `GFG` `Google`\n- [Minimum steps to destination](https://practice.geeksforgeeks.org/problems/minimum-number-of-steps-to-reach-a-given-number5234/1/) `GFG` `Amex` `Adobe`\n- [Hamiltonian Cycle](https://www.geeksforgeeks.org/hamiltonian-cycle-backtracking-6/) `GFG`\n- [M colorning problem](https://www.geeksforgeeks.org/m-coloring-problem-backtracking-5/) `GFG`\n- [The Knight's tour](https://www.geeksforgeeks.org/the-knights-tour-problem-backtracking-1/) `GFG`\n- [Maximum number possible by doing at-most K swaps](https://www.geeksforgeeks.org/find-maximum-number-possible-by-doing-at-most-k-swaps/) `GFG`\n- [HackerRank](https://www.hackerrank.com/domains/algorithms?filters%5Bsubdomains%5D%5B%5D=recursion\u0026filters%5Bdifficulty%5D%5B%5D=hard)\n- [Concatenated Words](https://leetcode.com/problems/concatenated-words/)`leetcode`\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmadjajja%2Frecursion-nd-backtracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmadjajja%2Frecursion-nd-backtracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmadjajja%2Frecursion-nd-backtracking/lists"}