Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 배열의 요소를 선형으로 검색하는 재귀 프로그램

<시간/>

임의의 순서로 정수를 포함하는 정수 배열 Arr[]이 제공됩니다. 목표는 배열에 대한 재귀 검색을 사용하여 배열에 있는 입력 정수 val을 찾는 것입니다.

입력 배열 Arr[]에 val이 없으면 -1을 반환합니다. Arr[]에 있는 경우 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.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

이 접근 방식에서 우리는 양쪽 끝에서 선형으로 배열을 탐색합니다. 입력 값을 양쪽 끝에 있는 요소와 비교합니다. 찾은 경우 인덱스를 반환하고 첫 번째 인덱스=이전 첫 번째 인덱스+1 및 마지막 인덱스=이전 마지막 인덱스-1인 다음 요소를 재귀적으로 확인합니다. 첫 번째 index>마지막 indexthen 요소가 없는 경우

  • 정수 요소가 있는 입력 배열 Ar[]을 가져옵니다.

  • 검색할 요소를 val로 가져옵니다.

  • searchRec(int arr[], int start,int end, int num) 함수는 배열, 검색할 첫 번째 및 마지막 인덱스 및 값 num을 취하여 찾은 경우 인덱스를 반환합니다.

  • 변수 결과를 -99로 취하십시오.

  • arr[start] ==​​num이면 결과를 시작으로 설정

  • arr[end] ==num이면 결과를 끝으로 설정

  • if (start> end) 결과=-1로 설정합니다. 전체 배열 순회

  • 결과에 -99 이외의 값이 있으면 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