📜  递归程序以线性搜索给定数组中的元素

📅  最后修改于: 2021-05-04 11:21:19             🧑  作者: Mango

给定一个未排序的数组和一个元素x,请在给定的数组中搜索x。为此编写递归C代码。如果不存在element,则返回-1。

方法:想法是将x与arr []中的第一个元素进行比较。如果在第一个位置找到了元素,则将其返回。否则,剩余的数组和x重复出现。

C++
// Recursive C++ program
// to search x in array
#include
 
using namespace std;
 
// Recursive function to
// search x in arr[l..r]
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 Code
int main()
{
    int arr[] = {12, 34, 54, 2, 3}, i;
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 3;
    int index = recSearch(arr, 0, n - 1, x);
    if (index != -1)
    cout << "Element " << x
         << " is present at index "
         << index;
    else
        cout << "Element" << x
             << " is not present" ;
    return 0;
}
 
// This code is contributed
// by Shivi_Aggarwal


C
#include
 
/* Recursive function to search x in arr[l..r] */
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);
}
 
int main()
{
    int arr[] = {12, 34, 54, 2, 3}, i;
    int n = sizeof(arr)/sizeof(arr[0]);
    int x = 3;
    int index = recSearch(arr, 0, n-1, x);
    if (index != -1)
       printf("Element %d is present at index %d", x, index);
    else
        printf("Element %d is not present", x);
    return 0;
}


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");
        }
 }


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


Javascript


输出:

Element 3 is present at index 4