입력으로 정수 배열 Arr[]이 제공됩니다. 목표는 재귀적 방법을 사용하여 배열 중에서 최대 및 최소 요소를 찾는 것입니다.
재귀를 사용하고 있으므로 length=1에 도달할 때까지 전체 배열을 순회한 다음 기본 케이스를 형성하는 A[0]을 반환합니다. 그렇지 않으면 현재 요소를 현재 최소값 또는 최대값과 비교하고 이후 요소에 대해 재귀를 통해 값을 업데이트합니다.
여기에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다 -
입력 − Arr={12,67,99,76,32};
출력 − 배열의 최대값:99
설명 − 모든 요소 중 99개가 최대입니다.
입력 - Arr={1,0,-99,9,3};
출력 − 배열의 최소값:-99
설명 − 모든 요소 중 -99가 최소입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
최소값 찾기
-
배열 Arr[]을 입력으로 사용합니다.
-
recforMin(int arr[], int len) 함수는 입력 배열과 그 길이를 취하고 재귀를 사용하여 배열에서 최소값을 반환합니다.
-
정수 변수 최소값 사용
-
현재 인덱스 len이 1이면 minimum=arr[0]을 설정하고 minimum을 반환합니다.
-
그렇지 않으면 minimum =minimum =minimum of arr[len] 또는 recforMin(arr,len-1)을 설정하고 반환합니다.
-
마지막에 최소 요소가 반환됩니다.
-
메인 내부에서 얻은 결과를 인쇄합니다.
최소값 찾기
-
최대값 찾기
-
배열 Arr[]을 입력으로 사용합니다.
-
recforMax(int arr[], int len) 함수는 입력 배열과 그 길이를 취하고 재귀를 사용하여 배열에서 최대값을 반환합니다.
-
정수 변수를 최대로 취하십시오.
-
현재 인덱스 len이 1이면 maximum=arr[0]을 설정하고 최대값을 반환합니다.
-
그렇지 않으면 최소값 =최대값(arr[len] 또는 recforMax(arr,len-1))을 설정하고 반환합니다.
-
마지막에 최대 요소가 반환됩니다.
-
메인 내부에서 얻은 결과를 인쇄합니다.
재귀를 사용하여 최소값 찾기
예시
#include <iostream> using namespace std; int recforMin(int arr[], int len){ int minimum; if (len == 1){ minimum=arr[0]; return minimum; } else{ return minimum=arr[len]<recforMin(arr,len-1)?arr[len]:recforMin(arr,len-1); } } int main(){ int Arr[] = {-89,98,76,32,21,35,100}; int length = sizeof(Arr)/sizeof(Arr[0]); cout <<"Minimum in the array :"<<recforMin(Arr, length); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Minimum in the array :-89
재귀를 사용하여 최소값 찾기
예시
#include <iostream> using namespace std; int recforMax(int arr[], int len){ int maximum; if (len == 1){ maximum=arr[0]; return maximum; } else{ return maximum=arr[len]>recforMax(arr,len-1)?arr[len]:recforMax(arr,len-1); } } int main(){ int Arr[] = {-89,98,76,32,21,35,100}; int length = sizeof(Arr)/sizeof(Arr[0]); cout <<"Maximum in the array :"<<recforMax(Arr, length); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Maximum in the array :-100