Это не оптимальное решение, потому что вы можете сохранить результат рекурсивного вызова в переменной int, но мне не разрешили в моем упражнении.
В любом случае, эта функция ищет самое низкое значение в массиве int с помощью рекурсии.
Сначала он проверяет, сколько элементов в массиве, проверяя, равен ли размер 1, а затем возвращает первое значение в качестве результата. Если таблица больше 1 (и технически также ниже), она сравнивает последнее значение в массиве с рекурсивным вызовом с остальной частью массива.
Рекурсия останавливается на 0-индексе, а затем сравнивает это значение с индексом 1. Затем она сравнивает наименьшее значение индекса 0 и 1 со значением из индекса 3 и т. Д., Пока не достигнет последнего значения.
int minimum(int array[], int size) {
if (size == 1) {
return array[0];
}
else {
return (array[size] < minimum(array, size - 1))
? array[size]
: minimum(array, size - 1);
}
}
int array[5] = {5, 99, 205, 1, 15};
int smallest = minimum(array, 4); // 4 = index of the last element
Правила в моем упражнении:
- Не изменять массив
- Не используйте переменные
- Использовать рекурсию