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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP