Введение
В этом практическом занятии вы изучите процесс нахождения наибольшего элемента в массиве с использованием рекурсии. Программа на 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;
}
Резюме
Превосходная работа! Вы успешно завершили это практическое занятие по нахождению наибольшего элемента в массиве с использованием рекурсии. Теперь вы должны хорошо понять, как использовать рекурсию для нахождения наибольшего элемента массива. Молодцы!



