给定一个未排序的数组和一个元素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