Bird
Raised Fist0
DSA Cprogramming~20 mins

Binary Search Recursive Approach in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Binary Search Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Recursive Binary Search on Sorted Array
What is the output of the following C code that performs a recursive binary search for the value 7 in the array?
DSA C
int binarySearch(int arr[], int left, int right, int x) {
    if (right >= left) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == x)
            return mid;
        if (arr[mid] > x)
            return binarySearch(arr, left, mid - 1, x);
        return binarySearch(arr, mid + 1, right, x);
    }
    return -1;
}

#include <stdio.h>
int main() {
    int arr[] = {1, 3, 5, 7, 9, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    int result = binarySearch(arr, 0, n - 1, 7);
    printf("%d", result);
    return 0;
}
A3
B2
C4
D-1
Attempts:
2 left
💡 Hint
Remember that array indexing starts at 0 and the function returns the index of the found element.
❓ Predict Output
intermediate
2:00remaining
Output when Element Not Found in Recursive Binary Search
What will be the output of this C code when searching for 8 in the given sorted array using recursive binary search?
DSA C
int binarySearch(int arr[], int left, int right, int x) {
    if (right >= left) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == x)
            return mid;
        if (arr[mid] > x)
            return binarySearch(arr, left, mid - 1, x);
        return binarySearch(arr, mid + 1, right, x);
    }
    return -1;
}

#include <stdio.h>
int main() {
    int arr[] = {2, 4, 6, 10, 12};
    int n = sizeof(arr) / sizeof(arr[0]);
    int result = binarySearch(arr, 0, n - 1, 8);
    printf("%d", result);
    return 0;
}
A3
B2
C-1
D0
Attempts:
2 left
💡 Hint
If the element is not present, the function returns -1.
🔧 Debug
advanced
2:00remaining
Identify the Error in Recursive Binary Search Implementation
What error will this recursive binary search code produce when compiled and run?
DSA C
int binarySearch(int arr[], int left, int right, int x) {
    if (right > left) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == x)
            return mid;
        if (arr[mid] > x)
            return binarySearch(arr, left, mid - 1, x);
        return binarySearch(arr, mid + 1, right, x);
    }
    return -1;
}

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    int result = binarySearch(arr, 0, n - 1, 3);
    printf("%d", result);
    return 0;
}
ARuntime error due to division by zero.
BThe function returns correct index 2.
CCompilation error due to missing semicolon.
DThe function may enter infinite recursion causing a stack overflow.
Attempts:
2 left
💡 Hint
Check the base condition carefully; it should allow the case when left equals right.
🧠 Conceptual
advanced
2:00remaining
Understanding Recursive Binary Search Call Stack
In a recursive binary search on array {2, 4, 6, 8, 10, 12, 14}, searching for 10, which sequence of mid indices will be checked?
A0, 3, 5
B3, 5, 4
C3, 1, 2
D6, 4, 5
Attempts:
2 left
💡 Hint
Calculate mid as left + (right - left)/2 at each recursive call.
🚀 Application
expert
2:00remaining
Result of Recursive Binary Search on Large Sorted Array
Given a sorted array of integers from 1 to 1000, what is the output index when searching recursively for the value 999?
DSA C
int binarySearch(int arr[], int left, int right, int x) {
    if (right >= left) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == x)
            return mid;
        if (arr[mid] > x)
            return binarySearch(arr, left, mid - 1, x);
        return binarySearch(arr, mid + 1, right, x);
    }
    return -1;
}

#include <stdio.h>
int main() {
    int arr[1000];
    for (int i = 0; i < 1000; i++) {
        arr[i] = i + 1;
    }
    int result = binarySearch(arr, 0, 999, 999);
    printf("%d", result);
    return 0;
}
A998
B997
C-1
D999
Attempts:
2 left
💡 Hint
Array indices start at 0, so value 999 is at index 998.

Practice

(1/5)
1. What is the main idea behind the binary search recursive approach when searching for an element in a sorted array?
easy
A. Check every element one by one from start to end
B. Divide the array into halves and search recursively in the half where the element can be
C. Sort the array first and then search linearly
D. Use a queue to store elements and search iteratively

Solution

  1. Step 1: Understand binary search principle

    Binary search works by dividing the sorted array into two halves and deciding which half to search next based on comparison with the middle element.
  2. Step 2: Apply recursion in binary search

    The recursive approach calls the same function on the half where the target element might be, reducing the search space each time.
  3. Final Answer:

    Divide the array into halves and search recursively in the half where the element can be -> Option B
  4. Quick Check:

    Binary search = divide and conquer [OK]
Hint: Remember: binary search splits array, searches half recursively [OK]
Common Mistakes:
  • Thinking binary search checks every element
  • Not using recursion to reduce search space
  • Searching unsorted arrays with binary search
2. Which of the following is the correct base case condition in a recursive binary search function in C?
easy
A. if (low == high) return -1;
B. if (low < high) return -1;
C. if (low > high) return -1;
D. if (low >= high) return -1;

Solution

  1. Step 1: Understand base case in recursion

    The base case stops recursion when the search space is invalid, meaning low index is greater than high index.
  2. Step 2: Identify correct condition

    When low > high, it means the element is not found, so return -1 to indicate failure.
  3. Final Answer:

    if (low > high) return -1; -> Option C
  4. Quick Check:

    Base case = low > high [OK]
Hint: Base case ends when low index passes high index [OK]
Common Mistakes:
  • Using low == high as base case incorrectly
  • Returning wrong value in base case
  • Not handling base case leading to infinite recursion
3. What will be the output of the following C code snippet using recursive binary search?
int binarySearch(int arr[], int low, int high, int x) {
  if (low > high) return -1;
  int mid = low + (high - low) / 2;
  if (arr[mid] == x) return mid;
  else if (arr[mid] > x) return binarySearch(arr, low, mid - 1, x);
  else return binarySearch(arr, mid + 1, high, x);
}

int main() {
  int arr[] = {2, 4, 6, 8, 10};
  int n = 5;
  int result = binarySearch(arr, 0, n - 1, 6);
  printf("%d", result);
  return 0;
}
medium
A. 2
B. 1
C. -1
D. 3

Solution

  1. Step 1: Trace the recursive calls

    Initial call: low=0, high=4, mid=2, arr[2]=6 equals target 6, so return 2 immediately.
  2. Step 2: Understand output

    The function returns index 2 where element 6 is found, so printf prints 2.
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    Element 6 found at index 2 [OK]
Hint: Check mid index and compare to target first [OK]
Common Mistakes:
  • Confusing index with value
  • Off-by-one errors in mid calculation
  • Not returning correct index on match
4. Identify the error in the following recursive binary search function and select the fix:
int binarySearch(int arr[], int low, int high, int x) {
  if (low >= high) return -1;
  int mid = (low + high) / 2;
  if (arr[mid] == x) return mid;
  else if (arr[mid] > x) return binarySearch(arr, low, mid - 1, x);
  else return binarySearch(arr, mid + 1, high, x);
}
medium
A. Return mid + 1 instead of mid when found
B. Change mid calculation to mid = low - (high - low) / 2;
C. Remove else if condition and use only if
D. Change base case to if (low > high) return -1;

Solution

  1. Step 1: Analyze base case condition

    The base case uses if (low >= high) which incorrectly stops search when low equals high, missing the last element.
  2. Step 2: Correct base case

    It should be if (low > high) to allow checking when low equals high, ensuring all elements are searched.
  3. Final Answer:

    Change base case to if (low > high) return -1; -> Option D
  4. Quick Check:

    Base case must allow low == high [OK]
Hint: Base case must be low > high, not low >= high [OK]
Common Mistakes:
  • Stopping recursion too early
  • Incorrect mid calculation causing infinite recursion
  • Returning wrong index on match
5. Given a sorted array arr = {1, 3, 5, 7, 9, 11, 13}, you want to find the index of element 8 using recursive binary search. What will be the sequence of mid indices checked before concluding the element is not found?
hard
A. [3, 5, 4]
B. [3, 1, 0]
C. [3, 1, 2]
D. [3, 4, 5]

Solution

  1. Step 1: Calculate first mid index

    Initial low=0, high=6, mid = (0+6)/2 = 3, arr[3]=7 less than 8, search right half next.
  2. Step 2: Calculate second mid index

    New low=4, high=6, mid = (4+6)/2 = 5, arr[5]=11 greater than 8, search left half next.
  3. Step 3: Calculate third mid index

    New low=4, high=4, mid = (4+4)/2 = 4, arr[4]=9 greater than 8, search left half next low=4, high=3 ends recursion.
  4. Final Answer:

    [3, 5, 4] -> Option A
  5. Quick Check:

    Mid indices checked = 3, 5, 4 [OK]
Hint: Track low, high, mid updates carefully each recursion [OK]
Common Mistakes:
  • Not updating low and high correctly
  • Miscomputing mid index
  • Stopping search too early
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