Open In App

Java Program To Recursively Linearly Search An Element In An Array

Last Updated : 14 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Given an array arr[] of n elements, write a recursive function to search for a given element x in the given array arr[]. If the element is found, return its index otherwise, return -1.

Input/Output Example:

Input : arr[] = {25, 60, 18, 3, 10}, Element to be searched x = 3
Output : 3 (index )

Input : arr[] = {10,20,30,24,15,40}, Element to be searched x = 3
Output : -1
For x = 35
Element x is not present in arr[]

Procedure:

The idea is to search the element from both sides of the array recursively. If the element that needs to be searched matches with the leftmost element of the left boundary, or it matches with the rightmost element of the right boundary, directly return the position of the element, else recur for the remaining array to search for the element with the value same as x.

Algorithmic Approach:

  • Base Case: If the right index r is less than the left index l, return -1 ( element is not present in the array ).
  • Recursive Condition:
    • Initially, check if the element is present in the leftmost element arr[l].
    • If it doesn’t match, check for the rightmost element arr[r].
    • If it is not present in the left or rightmost part, then update the left and right index l = l+1 and r= r-1.
    • If the element is present in the index, return the index value.

Example:

Java
// Java Program to Search an element in an Array Recursively

// Main class
public class Geeks
{
    // Method 1
    // Recursive method to search for an element and
    // its index in the array
    static int recursiveSearch(int arr[], int l, int r,
                               int x)
    {
        // if r<l,it means that element is not present in
        // the array
        if (r < l)
            return -1;

        if (arr[l] == x)
            return l;

        if (arr[r] == x)
            return r;

        // Since element has not found on both left most and
        // rightmost boundary,ie at l and r, now recursive the
        // array to find position of x.
        return recursiveSearch(arr, l + 1, r - 1, x);
    }

    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
        // Element to be searched for
        // Custom input number
        int x = 3;

        // Declaring and initializing the integer array
        int arr[] = new int[] { 25, 60, 18, 3, 10 };

        // Calling the above recursive method method to
        // search for the element in the array

        // Recursive function is called over array to
        // get the index of the element present in an array
        int index
        = recursiveSearch(arr, 0, arr.length - 1, x);

        // If index is found means element exists
        if (index != -1)

            // Print the element and its index
            System.out.println("Element " + x
                               + " is present at index "
                               + index);

        // If we hit else case means
        // element is not present in the array
        else

            // Simply display the corresponding element
            // is not present
            System.out.println("Element " + x
                               + " is not present");
    }
}

Output
Element 3 is present at index 3

Time complexity: O(N2) where, N is size of input array.
Auxiliary Space : O(N)



Next Article
Article Tags :
Practice Tags :

Similar Reads