Programa recursivo para buscar linealmente un elemento en una array dada

Dada una array no ordenada y un elemento x, busque x en la array dada. Escriba código C recursivo para esto. Si el elemento no está presente, devuelve -1. 

Enfoque: la idea es comparar x con el último elemento en arr[]. Si el elemento se encuentra en la última posición, devuélvalo. De lo contrario, recurra a searchElement() para la array restante y el elemento x. 

C++

/*
 * 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 code
int 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

C

/* 
 * 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)

Java

// Recursive Java program to search x in array
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)
           System.out.println("Element " + x + " is present at index " + 
                                                    index);
        else
            System.out.println("Element " + x + " is not present");
        }
 }

Python3

# 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 Code 
arr = [12, 34, 54, 2, 3]
n = len(arr)
x = 3
index = 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

C#

// Recursive C# program to 
// search x in array
using 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

<?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.
?>

Javascript

<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>

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *