Recursive program to linearly search an element in a given array

23 Jun, 2022
Given an unsorted array and an element x, search x in the given array. Write recursive C code for this. If the element is not present, return -1. 
Approach : The idea is to compare x with the last element in arr[]. If the element is found at the last position, return it. Else recur searchElement() for remaining array and element x. 
C++
C
Java
Python3
C#
PHP
Javascript
/* * Approach : The idea is to compare x with the last element * in arr[]. If the element is found at the last position, * return it. Else recur searchElement() for remaining array and * element x. */    #include <iostream> using namespace std; // Recursive function to search for x in arr[]int searchElement(int arr[], int size, int x) {         size--;         // Base case (Element not present in the array)    if (size < 0) {        return -1;    }    // Base case (Element found, return its position)    if (arr[size] == x) {        return size;    }     // Recursive case    return searchElement(arr, size, x); }  // Driver codeint main() {    int arr[] = {17, 15, 11, 8, 13, 19};    int size = sizeof(arr) / sizeof(arr[0]);    int x = 11;    int idx = searchElement(arr, size, x);    if (idx != -1)        cout << "Element " << x << " is present at index " <<idx;    else        cout << "Element " << x << " is not present in the array";    return 0;} // Code contributed by farzams101
/* * Approach : The idea is to compare x with the last element in arr[]. * If an element is found at the last position, return it. * Else recur elmntSrch() for remaining array and element x. */ #include <stdio.h> // Recursive function to search x in arr[]int elmntSrch(int arr[], int size, int x) {    int rec;     size--;     if (size >= 0) {        if (arr[size] == x)            return size;        else            rec = elmntSrch(arr, size, x);    }    else        return -1;     return rec;} int main(void) {    int arr[] = {12, 34, 54, 2, 3};    int size = sizeof(arr) / sizeof(arr[0]);    int x = 3;    int indx;     indx = elmntSrch(arr, size, x);     if (indx != -1)        printf("Element %d is present at index %d", x, indx);    else        printf("Element %d is not present", x);     return 0;} // This code is contributed by Manish Kumar (mkumar2789)
// Recursive Java program to search x in arrayclass Test{     static int arr[] = {12, 34, 54, 2, 3};           /* Recursive Method to search x in arr[l..r] */     static int recSearch(int arr[], int l, int r, int x)     {          if (r < l)             return -1;          if (arr[l] == x)             return l;          if (arr[r] == x)             return r;          return recSearch(arr, l+1, r-1, x);     }           // Driver method     public static void main(String[] args)     {        int x = 3;                 //Method call to find x        int index = recSearch(arr, 0, arr.length-1, x);        if (index != -1)           System.out.println("Element " + x + " is present at index " +                                                    index);        else            System.out.println("Element " + x + " is not present");        } }
# Recursive function to search x in arr[l..r]def recSearch( arr, l, r, x):    if r < l:        return -1    if arr[l] == x:        return l    if arr[r] == x:        return r    return recSearch(arr, l+1, r-1, x) # Driver Codearr = [12, 34, 54, 2, 3]n = len(arr)x = 3index = recSearch(arr, 0, n-1, x)if index != -1:    print ("Element", x,"is present at index %d" %(index))else:    print ("Element %d is not present" %(x)) # Contributed By Harshit Agrawal
// Recursive C# program to// search x in arrayusing System; static class Test{    static int []arr = {12, 34, 54, 2, 3};         /* Recursive Method to search x in arr[l..r] */    static int recSearch(int []arr, int l, int r, int x)    {        if (r < l)            return -1;        if (arr[l] == x)            return l;        if (arr[r] == x)            return r;        return recSearch(arr, l+1, r-1, x);    }         // Driver method    public static void Main(String[] args)    {        int x = 3;                 // Method call to find x        int index = recSearch(arr, 0, arr.Length-1, x);                 if (index != -1)        Console.Write("Element " + x +                      " is present at index " + index);        else            Console.Write("Element " + x +                          " is not present");        }} // This code is contributed by Smitha Dinesh Semwal
<?php// Recursive PHP program to// search x in array // Recursive function to// search x in arr[l..r]function recSearch($arr, int $l,                   int $r, int $x){    if ($r < $l)        return -1;    if ($arr[$l] == $x)        return $l;    if ($arr[$r] == $x)        return $r;     return recSearch($arr, $l+1, $r-1, $x);}     // Driver Code    $arr = array(12, 34, 54, 2, 3); $i;    $n = count($arr);    $x = 3;    $index = recSearch($arr, 0, $n - 1, $x);    if ($index != -1)    echo "Element"," ", $x," ",         "is present at index ", $index;    else        echo "Element is not present", $x; // This code is contributed by anuj_67.?>
<script>// Recursive Javascript program to // search x in array   // Recursive function to // search x in arr[l..r] function recSearch(arr, l, r, x){    if (r < l)        return -1;    if (arr[l] == x)        return l;    if (arr[r] == x)        return r;     return recSearch(arr, l+1, r-1, x);}       // Driver Code    let arr = [12, 34, 54, 2, 3];    let i;    let n = arr.length;    let x = 23;    let index = recSearch(arr, 0, n - 1, x);     if (index != -1){      document.write(`Element ${x} is present at index ${index}`);    }    else{        document.write("Element is not present " + x);    }   // This code is contributed by _saurabh_jaiswal.</script>
Element 11 is present at index 2
Explanation
We iterate through the array from the end by decrementing the size variable and recursively calling the function searchElement(). If the size variable becomes less than zero it means the element is not present in the array and we return -1. If a match is found, we return the size variable which is the index of the found element. This process is repeated until a value is returned to main().
It is important to note that if there are duplicate elements in the array, the index of the last matched element will be returned since we are (recursively) iterating the array from the end.
Time Complexity: O(N), where N is the size of the given array.Auxiliary Space: O(1)
Recursive program to linearly search an element in a given array | GeeksforGeeks - YouTubeGeeksforGeeks529K subscribersRecursive program to linearly search an element in a given array | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 1:13•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=6m6MQUnPOfI" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
Smitha Dinesh Semwal
vt_m
Shivi_Aggarwal
VineetGupta1
_saurabh_jaiswal
mkumar2789
aarzoosharma12
amartyaghoshgfg
harendrakumar123
farzams101
School Programming
Searching
Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction To PYTHON
Interfaces in Java
Types of Operating Systems
Operator Overloading in C++
Polymorphism in C++
Maximum and minimum of an array using minimum number of comparisons
K'th Smallest/Largest Element in Unsorted Array | Set 1
Search an element in a sorted and rotated array
Find the Missing Number
Search, insert and delete in an unsorted array