Problems exploring recursive thinking, backtracking, and divide-and-conquer approaches.
- Base case and recursive case design
- Call stack understanding
- Tail recursion optimization
- Backtracking algorithms
- Divide and conquer
- Memoization (leading to DP)
- Tree recursion vs linear recursion
- fibonaci - Fibonacci sequence implementation
- keypad_prob - Print all possible letter combinations for a phone keypad digit string (recursive/backtracking)
- matrix_traversal - Find all paths from top-left to bottom-right in a matrix (backtracking)
- nqueen - N-Queens problem with backtracking (O(N) and O(1) checks)
- permutation - Print all permutations of a string (handles duplicates)
- printallcombi - Print all combinations (subsets) of a set (recursive and bitmasking)
- printeq_a_b - Print all unique strings with given counts of 'a' and 'b' (multiset permutations)
- printvalidParanthesis - Generate all valid parentheses combinations (Catalan numbers)
- rec_SumArray - Recursive array sum
- rec_arrayIsSorted - Check if array is sorted recursively
- recursion_fibinacci - Fibonacci sequence
- recursion_graycode - Gray code generation
- recursion_palindrome - Check palindrome recursively
- recursion_pow - Power function (x^n)
- recursion_string - String manipulation with recursion
- recursion_sum_n - Sum of N natural numbers
- recursion_sumdigits - Sum of digits
- recursion_sumofdigits - Sum of digits (alternate)
- recursion_towerofhanoi - Tower of Hanoi puzzle
- recusrion_factorial - Factorial calculation
- recusrion_fibnaci - Fibonacci (alternate spelling)
- recusrion_palindrome - Palindrome check (alternate)
- recusrion_reverse_str - Reverse string recursively
- recusrion_sumdigits - Sum of digits (third version)
- rev_array - Reverse array recursively
- rmvCharStr - Remove specific character from string
- spacePermutation - Print all strings formed by inserting spaces between characters (recursive/backtracking)
- str_remvRep - Remove consecutive repeated characters from string
- str_rep_str - Replace substring in string recursively
- subseq_str - Generate all subsequences (3 approaches: vector, return, backtracking)
- sudoku - Sudoku solver using recursive backtracking (supports 4x4 and 9x9 grids)
- wordrbeakproblem - Word break problem using backtracking
- Always define a clear base case
- Make sure recursion progresses toward base case
- Watch out for stack overflow with deep recursion
- Consider iterative alternatives for tail-recursive functions
- Pass by const reference for large data structures