Наибольший элемент в массиве с использованием рекурсии

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы изучите процесс нахождения наибольшего элемента в массиве с использованием рекурсии. Программа на C запросит у пользователя размер массива, затем введет элементы массива, а затем выведет наибольший элемент массива.

Настройка файла

Сначала создайте новый файл с именем main.c в директории ~/project/. Затем скопируйте следующий код и вставьте его в файл, который содержит весь код, необходимый для завершения этого практического занятия.

#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;
}

Настройка файла

Сначала создайте новый файл с именем main.c в директории ~/project/. Затем скопируйте следующий код и вставьте его в файл, который содержит весь код, необходимый для завершения этого практического занятия.

#include<stdio.h>

#define MAX 100

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

int main()
{
    printf("\n\n\t\tLabEx - Лучшее место для обучения\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);   // passing the complete array as parameter
    printf("\n\nНаибольший элемент массива равен %d\n\n", max);
    printf("\n\n\t\t\tПрограммирование - это весело!\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;
}

Разбор кода

Эта программа на 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 []);  // takes array of int as parameter
int size;

int main()
{
    printf("\n\n\t\tLabEx - Лучшее место для обучения\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);   // passing the complete array as parameter
    printf("\n\nНаибольший элемент массива равен %d\n\n", max);
    printf("\n\n\t\t\tПрограммирование - это весело!\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;
}

Резюме

Превосходная работа! Вы успешно завершили это практическое занятие по нахождению наибольшего элемента в массиве с использованием рекурсии. Теперь вы должны хорошо понять, как использовать рекурсию для нахождения наибольшего элемента массива. Молодцы!