Рекурсивно найти минимальный элемент в массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно написать рекурсивную функцию (программу) которая будет искать минимальный элемент в массиве.

Решение задачи: «Рекурсивно найти минимальный элемент в массиве»

textual
Листинг программы
#include <stdio.h>
 
int min_array(const int* _f, const int* _l){
    int v;
    if((_f + 1) < _l){
        v = min_array(_f + 1, _l);
        return (*_f < v) ? *_f : v;
    }
    return *_f;
}
 
int main(void){
    int a[] = { 6, 5, 3, 7, 9 };
    printf("min: %d\n", min_array(a, a + sizeof(a)/sizeof(a[0])) );
    getchar();
    return 0;
}

Объяснение кода листинга программы

В данном коде представлен рекурсивный алгоритм нахождения минимального элемента в массиве. Алгоритм работает следующим образом:

  1. Входные параметры функции min_array — это указатели на два элемента массива, первый элемент включительно, второй элемент исключительно.
  2. При рекурсивном вызове функции min_array, происходит смещение указателя _f на следующий элемент массива.
  3. Если _f не является последним элементом массива (т.е. _f + 1 < _l), то происходит рекурсивный вызов функции min_array с указателями _f + 1 и _l. При этом в переменной v сохраняется результат рекурсивного вызова.
  4. Затем происходит проверка условия (_f < v) и возвращается наименьшее значение из двух: либо _f, либо v.
  5. Если _f является последним элементом массива (т.е. _f + 1 == _l), то возвращается значение *_f.
  6. В функции main создается массив a и выводится на экран минимальный элемент массива, найденный с помощью функции min_array.
  7. Для выхода из программы используется функция getchar(), которая ожидает нажатия любой клавиши. Список элементов кода:
  8. min_array — рекурсивная функция для поиска минимального элемента в массиве.
  9. v — временная переменная для хранения результата рекурсивного вызова функции min_array.
  10. _f — указатель на текущий элемент массива.
  11. _l — указатель на последний элемент массива.
  12. a — массив, в котором необходимо найти минимальный элемент.
  13. printf — функция вывода на экран информации.
  14. getchar — функция ожидания нажатия клавиши для завершения работы программы.
  15. main — функция, в которой происходит создание и заполнение массива a, а затем вызов функции min_array для поиска минимального элемента и вывод результата на экран.

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы