Bird
Raised Fist0
DSA C++programming~10 mins

Recursion on Arrays and Strings in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to return the sum of elements in the array recursively.

DSA C++
int sumArray(int arr[], int n) {
    if (n == 0) return 0;
    return arr[n-1] + [1];
}
Drag options to blanks, or click blank then click option'
AsumArray(arr, n+1)
BsumArray(arr, n-1)
CsumArray(arr, n)
DsumArray(arr, 0)
Attempts:
3 left
💡 Hint
Common Mistakes
Using n+1 causes infinite recursion.
Using n causes no change in problem size.
2fill in blank
medium

Complete the code to check if a string is a palindrome using recursion.

DSA C++
bool isPalindrome(const string &s, int start, int end) {
    if (start >= end) return true;
    if (s[start] != s[end]) return false;
    return [1];
}
Drag options to blanks, or click blank then click option'
AisPalindrome(s, start+1, end-1)
BisPalindrome(s, start, end-1)
CisPalindrome(s, start+1, end)
DisPalindrome(s, start-1, end+1)
Attempts:
3 left
💡 Hint
Common Mistakes
Moving only one pointer causes incorrect checks.
Moving pointers in wrong directions causes errors.
3fill in blank
hard

Fix the error in the recursive function to find the maximum element in an array.

DSA C++
int maxElement(int arr[], int n) {
    if (n == 1) return arr[0];
    int max_rest = maxElement(arr, [1]);
    return (arr[n-1] > max_rest) ? arr[n-1] : max_rest;
}
Drag options to blanks, or click blank then click option'
An+1
B1
Cn-1
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using n+1 causes out-of-bounds access.
Using 0 or 1 does not reduce the problem correctly.
4fill in blank
hard

Fill both blanks to create a recursive function that counts occurrences of a character in a string.

DSA C++
int countChar(const string &s, char c, int index) {
    if (index == [1]) return 0;
    int count_rest = countChar(s, c, index + 1);
    return (s[index] == [2]) ? 1 + count_rest : count_rest;
}
Drag options to blanks, or click blank then click option'
As.length()
Bc
Cindex
Ds.size()
Attempts:
3 left
💡 Hint
Common Mistakes
Using index instead of string length in base case.
Comparing with wrong character variable.
5fill in blank
hard

Fill all three blanks to implement a recursive function that reverses a string in place.

DSA C++
void reverseString(string &s, int start, int end) {
    if (start >= [1]) return;
    swap(s[[2]], s[[3]]);
    reverseString(s, start + 1, end - 1);
}
Drag options to blanks, or click blank then click option'
Aend
Bstart
Dstart + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong indices for swap.
Incorrect base case condition.

Practice

(1/5)
1. What does a recursive function on an array typically do to process the array elements?
easy
A. It processes one element and calls itself on the rest of the array
B. It processes all elements at once without calling itself
C. It uses loops instead of calling itself
D. It only processes the last element of the array

Solution

  1. Step 1: Understand recursion on arrays

    A recursive function on an array usually handles one element and then calls itself on the remaining elements.
  2. Step 2: Compare options

    It processes one element and calls itself on the rest of the array matches this behavior. Options A, C, and D describe non-recursive or incorrect methods.
  3. Final Answer:

    It processes one element and calls itself on the rest of the array -> Option A
  4. Quick Check:

    Recursion on arrays = process one element + recurse [OK]
Hint: Remember recursion breaks problem into smaller parts [OK]
Common Mistakes:
  • Thinking recursion processes all elements at once
  • Confusing recursion with loops
  • Assuming recursion only processes last element
2. Which of the following is the correct base case for a recursive function that sums elements of an integer array arr of size n?
easy
A. if (n == 0) return 0;
B. if (n == 1) return arr[1];
C. if (arr == NULL) return 0;
D. if (n < 0) return 0;

Solution

  1. Step 1: Identify base case for recursion on array size

    The base case should stop recursion when no elements are left, which is when n == 0.
  2. Step 2: Check each option

    if (n == 0) return 0; returns 0 when n == 0, which is correct. if (n == 1) return arr[1]; incorrectly accesses arr[1] instead of arr[0]. if (arr == NULL) return 0; checks pointer but not size. if (n < 0) return 0; uses invalid negative size.
  3. Final Answer:

    if (n == 0) return 0; -> Option A
  4. Quick Check:

    Base case for empty array = return 0 [OK]
Hint: Base case usually when size is zero [OK]
Common Mistakes:
  • Using wrong index in base case
  • Checking pointer instead of size
  • Allowing negative sizes
3. What is the output of the following C++ code?
int sumArray(int arr[], int n) {
  if (n == 0) return 0;
  return arr[n-1] + sumArray(arr, n-1);
}

int main() {
  int arr[] = {1, 2, 3, 4};
  int result = sumArray(arr, 4);
  std::cout << result;
  return 0;
}
medium
A. Compilation error
B. 24
C. 0
D. 10

Solution

  1. Step 1: Trace recursive calls

    sumArray(arr,4) = arr[3] + sumArray(arr,3) = 4 + sumArray(arr,3) sumArray(arr,3) = arr[2] + sumArray(arr,2) = 3 + sumArray(arr,2) sumArray(arr,2) = arr[1] + sumArray(arr,1) = 2 + sumArray(arr,1) sumArray(arr,1) = arr[0] + sumArray(arr,0) = 1 + 0 = 1
  2. Step 2: Calculate total sum

    Total = 4 + 3 + 2 + 1 = 10
  3. Final Answer:

    10 -> Option D
  4. Quick Check:

    Sum of {1,2,3,4} = 10 [OK]
Hint: Sum recursion adds last element + sum of rest [OK]
Common Mistakes:
  • Confusing index n-1 with n
  • Forgetting base case returns 0
  • Assuming sum is product
4. Find the error in this recursive function that counts occurrences of character c in string s:
int countChar(string s, char c, int index) {
  if (index == s.length()) return 0;
  if (s[index] == c) return 1 + countChar(s, c, index++);
  else return countChar(s, c, index++);
}
medium
A. Missing check for empty string
B. Base case condition is wrong
C. Using post-increment (index++) causes infinite recursion
D. Function should return bool, not int

Solution

  1. Step 1: Analyze recursive calls with index++

    Using index++ passes the current index value before increment, so recursive call uses same index repeatedly.
  2. Step 2: Identify infinite recursion cause

    Because index does not increase in recursive calls, base case is never reached, causing infinite recursion.
  3. Final Answer:

    Using post-increment (index++) causes infinite recursion -> Option C
  4. Quick Check:

    Post-increment in recursion argument = infinite loop [OK]
Hint: Use pre-increment (++index) or index+1 in recursion call [OK]
Common Mistakes:
  • Using post-increment in recursive call argument
  • Ignoring base case correctness
  • Confusing return types
5. Given a string s, write a recursive function to check if it is a palindrome (reads same forward and backward). Which approach below correctly implements this?
hard
A. Reverse string using loop and compare with original
B. Check if first and last chars match, then recurse on substring excluding them
C. Count matching characters from start only
D. Use recursion to count characters and compare counts

Solution

  1. Step 1: Understand palindrome check recursively

    To check palindrome recursively, compare first and last characters; if they match, recurse on substring excluding them.
  2. Step 2: Evaluate options

    Check if first and last chars match, then recurse on substring excluding them matches this logic. Reverse string using loop and compare with original uses loops, not recursion. Options C and D do not correctly check palindrome property.
  3. Final Answer:

    Check if first and last chars match, then recurse on substring excluding them -> Option B
  4. Quick Check:

    Palindrome recursion = compare ends + recurse inside [OK]
Hint: Compare ends, recurse inside substring [OK]
Common Mistakes:
  • Using loops instead of recursion
  • Only checking one side of string
  • Counting chars instead of comparing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard