재귀를 사용한 배열 내 최대 요소 찾기

CBeginner
지금 연습하기

소개

이 랩에서는 재귀를 사용하여 배열에서 가장 큰 요소를 찾는 과정을 안내합니다. C 프로그램은 사용자에게 배열의 크기를 입력하라는 메시지를 표시한 다음, 배열의 요소를 입력받고, 배열의 가장 큰 요소를 출력합니다.

파일 설정

먼저, ~/project/ 디렉토리에 main.c라는 새 파일을 생성합니다. 그런 다음, 아래 코드를 복사하여 파일에 붙여넣습니다. 이 코드는 이 랩을 완료하는 데 필요한 모든 코드를 포함합니다.

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // takes array of int as parameter
int size;

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nEnter the size of the array: ");
    scanf("%d", &size);
    printf("\n\nEnter %d elements\n\n", size);

    for(i = 0; i < size; i++)
    {
        scanf("%d", &arr[i]);
    }

    max = getMaxElement(arr);   // passing the complete array as parameter
    printf("\n\nLargest element of the array is %d\n\n", max);
    printf("\n\n\t\t\tCoding is Fun !\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] is invalid
    if(i < size)   // till the last element
    {
        if(max < a[i])
        max = a[i];

        i++;    // to check the next element in the next iteration
        getMaxElement(a);   // recursive call
    }
    return max;
}

코드 이해

이 C 프로그램은 main()getMaxElement()의 두 가지 함수로 구성됩니다.

2.1 함수 main()
  • 배열의 요소를 저장하기 위해 arr이라는 배열을 선언하고, 배열의 가장 큰 요소를 저장하기 위한 max 변수와 함수의 반복을 유지하기 위한 i 변수를 초기화합니다.
  • 사용자에게 배열의 크기를 입력하라는 메시지를 표시합니다.
  • 사용자에게 배열의 요소를 입력하라는 메시지를 표시합니다.
  • getMaxElement() 함수를 호출하고 arr이라는 배열을 매개변수로 전달합니다.
  • max 변수에 저장된 배열의 가장 큰 요소를 출력합니다.
2.2 함수 getMaxElement()

이것은 배열의 가장 큰 요소를 반환하는 재귀 함수입니다.

  • 함수의 반복을 유지하기 위해 정적 값 i를 선언하고 0 으로 초기화하며, 배열의 가장 큰 요소를 저장하기 위해 정적 값 max를 선언하고 매우 작은 값 -9999로 초기화합니다.
  • i의 값이 배열의 크기보다 작은지 확인합니다.
  • 배열의 i번째 요소의 값이 현재 max 값보다 크면, max의 값을 배열의 i번째 요소로 업데이트합니다.
  • i를 다음 요소로 설정하고 getMaxElement() 함수를 호출하여 이 함수를 재귀적으로 만듭니다.

프로그램 테스트

코드를 컴파일하고 실행하려면 ~/project/ 디렉토리에서 터미널을 열고 아래 단계를 따르세요.

  • gcc main.c를 입력하여 코드를 컴파일합니다.
  • ./a.out를 입력하여 프로그램을 실행합니다.
  • 프롬프트에서 배열의 크기를 입력하고 ENTER 키를 누릅니다.
  • 배열의 요소를 입력하고 각 요소 입력 후 ENTER 키를 누릅니다.
  • 프로그램은 배열의 가장 큰 요소를 출력합니다.

전체 코드

#include<stdio.h>

#define MAX 100

int getMaxElement(int []); // 정수 배열을 매개변수로 받음
int size;

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int arr[MAX], max, i;
    printf("\n\n배열의 크기를 입력하세요: ");
    scanf("%d", &size);
    printf("\n\n%d개의 요소를 입력하세요\n\n", size);

    for(i = 0; i < size; i++)
    {
        scanf("%d", &arr[i]);
    }

    max = getMaxElement(arr);   // 전체 배열을 매개변수로 전달
    printf("\n\n배열의 가장 큰 요소는 %d입니다\n\n", max);
    printf("\n\n\t\t\tCoding is Fun !\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] is invalid
    if(i < size)   // 마지막 요소까지
    {
        if(max < a[i])
        max = a[i];

        i++;    // 다음 반복에서 다음 요소를 확인하기 위해
        getMaxElement(a);   // 재귀 호출
    }
    return max;
}

요약

잘하셨습니다! 재귀를 사용하여 배열에서 가장 큰 요소를 찾는 방법에 대한 이 랩을 성공적으로 완료했습니다. 이제 재귀를 사용하여 배열의 가장 큰 요소를 찾는 방법에 대한 훌륭한 이해를 갖게 되셨을 것입니다. 수고하셨습니다!