@defild

Как с помощью рекурсии найти минимальный элемент массива?

Как с помощью рекурсии найти минимальный элемент массива ? вот мой код:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <Windows.h>
#define N 100

int Min(int arr[], int n) {
	
}

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	srand(time(NULL));

	int arr[N], n;
	printf("n = ");scanf_s("%d", &n);
	for (int i = 0; i < n; i++)
	{
		arr[i] = rand() % 355;
		printf("%6d", arr[i]);
	}
	printf("\n");
	printf("Min = %d", Min(arr, n));
	return 0;
}
  • Вопрос задан
  • 762 просмотра
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
int Min(int arr[], int n, int current) {
  return n > 0 ? Min(arr, n - 1, min(current, arr[n-1])) : current;
}


int minValue = Min(arr, n, +бесконечность)


ещё вариант
int Min(int arr[], int n) {
  return n > 0 ? min(Min(arr, n - 1), arr[n-1])) : +бесконечность;
}


int minValue = Min(arr, n);


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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы