C++语言中用于线性搜索给定数组中元素的递归程序


给定一个整数数组Arr[],其中包含任意顺序的整数。目标是使用数组上的递归搜索查找数组中存在的输入整数val。

如果在输入数组Arr[]中找不到val,则返回-1。如果在Arr[]中找到val,则打印val的索引。

示例

输入−Arr[] = {11,43,24,50,93,26,78} val=26

输出− 26 位于索引 5

说明

Elements in the array start from index 0 to index=array length -1.
First index=0 last index=6 : 11 != 26, 78 != 26 → 0+1 , 6-1
First index=1 last index=5 : 43 != 26, 26 = 26 return 5
26 is present at index 5.

输入− Arr[] = {11,43,24,50,93,26,78} val=66

输出− 66不存在

说明

Elements in the array start from index 0 to index=array length -1.
First index=0 last index=6 : 11 != 66, 78 != 66 → 0+1 , 6-1
First index=1 last index=5 : 66 != 26, 66 != 26 → 1+1 , 5-1
First index=2 last index=4 : 24 != 66, 93 != 66 → 2+1 , 4-1
First index=3 last index=3 : 50 != 26, 50 != 26 → 3+1 , 3-1
First index=3 last index=2 3>2 end
66 not found.

下面程序中使用的方法如下

在这种方法中,我们将从两端线性遍历数组。将输入值与两端的元素进行比较。如果找到,则返回索引;否则,使用first index=prev first index+1 和 last index=prev last index-1递归检查下一个元素。如果first index>last index,则表示未找到元素。

  • 使用整数元素获取输入数组Ar[]。

  • 将要搜索的元素作为val。

  • 函数searchRec(int arr[], int start,int end, int num)接收一个数组、第一个和最后一个索引以及要搜索的值num,如果找到则返回索引。

  • 将变量result设为-99。

  • 如果arr[start] == num,则将result设为start

  • 如果arr[end] == num,则将result设为end

  • 如果(start > end),则将result设为-1。因为已经遍历了整个数组

  • 如果result的值不为-99,则返回result;否则,使用searchRec(arr, start + 1, end - 1, num)递归搜索

  • 在主函数中检查返回值并相应地打印结果

示例

#include<bits/stdc++.h>
using namespace std;
int searchRec(int arr[], int start,int end, int num){
   int result=-99;
   if (start > end){
      result= -1;
   }
   if (arr[start] == num){
      result=start;
   }
   if (arr[end] == num){
      result=end;
   }
   if( result!=-99){
      return result;
   }
   return searchRec(arr, start + 1, end - 1, num);
}
int main(){
   int Arr[] = {11,43,22,56,33,26,78};
   int i;
   int len = sizeof(Arr) / sizeof(Arr[0]);
   int val = 56;
   int pos = searchRec(Arr, 0, len - 1, val);
   if (pos == -1){
      cout<<val<<" is not present" ;
   }
   else{
      cout<<val<<" found at index "<<pos;
   }
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出

56 found at index 3

更新于:2021年11月3日

1K+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告