Опишите построчно, что происходит в функции maximum, не понимаю #include <stdio.h> #include <iostream> using namespace std; int maximum(int arr[], int n) { if (n == 1) { return arr[0]; } else { int max = maximum(arr, n - 1); cout << "Наибольший элемент: "; cout << max; cout << "\n"; return arr[n-1] > max ? arr[n-1] : max; } } int main() { setlocale(LC_ALL, "Russian"); cout << "Значения параметров: \n"; int array[10] = { 1,3,4,6,8,2,3,7,0,4 }; cout << "\nМаксимальный элемент массива: " << maximum(array, 10); return 0; }
Я понимаю, что это рекурсивный поиск максимума, я не понимаю, как он это делает, поэтому и хочется построчно разобрать функцию
AlexWitcher, не, он конечный результат правильно выводит, но вот с промежуточными у меня в голове вопрос возник)) Меня напрягает этот вывод в консоль после каждой смены max
Мы доходим до первого элемента. Потом мы сравниваем первый элемент с следующим и возвращаем максимальный. Дошли до первого, вернули его и вернулись в прошлую ветку рекурсии. max=1, сравниваем с a2=3, возвращаем 3. Потом max=3, , a3=4, вернули 4. Потом Max = 4, a4=6, вернули 6, потом max=6, a5=8, вернули 8. Потом max = 8, a6 =2, вернули 8, потому что 8> 2. И так далее. Надеюсь понятно
во первых ты не можешь задавать переменную как макс, потому что есть такая функция. а так рекурсивно ищет максимум в массиве.