Загрузка...

Что делает этот код? С++

Тема в разделе C/C++ создана пользователем AlexWitcher 20 фев 2022. 360 просмотров

  1. AlexWitcher
    AlexWitcher Автор темы 20 фев 2022 0 17 июн 2021
    Опишите построчно, что происходит в функции 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;
    }
     
    20 фев 2022 Изменено
  2. Блудик
    Блудик 20 фев 2022 Заблокирован(а) 779 7 фев 2018
    выбирает 1 из эллементов
     
  3. EveryDayRain
    EveryDayRain 20 фев 2022 Бездонные несчастные убитые глаза 718 19 янв 2022
    Рекурсивный поиск максимального элемента в массиве
     
  4. AlexWitcher
    AlexWitcher Автор темы 20 фев 2022 0 17 июн 2021
    Я понимаю, что это рекурсивный поиск максимума, я не понимаю, как он это делает, поэтому и хочется построчно разобрать функцию
     
    1. EveryDayRain
      AlexWitcher, а ты можешь скрином скинуть что она выводит? По-моему функция неправильная
    2. AlexWitcher Автор темы
      Да вот в том то и дело, что все правильно считает [IMG] EveryDayRain,
    3. EveryDayRain
      AlexWitcher, не, он конечный результат правильно выводит, но вот с промежуточными у меня в голове вопрос возник))
      Меня напрягает этот вывод в консоль после каждой смены max
  5. EveryDayRain
    EveryDayRain 20 фев 2022 Бездонные несчастные убитые глаза 718 19 янв 2022
    Мы доходим до первого элемента. Потом мы сравниваем первый элемент с следующим и возвращаем максимальный. Дошли до первого, вернули его и вернулись в прошлую ветку рекурсии. 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. И так далее. Надеюсь понятно
     
  6. LVV
    во первых ты не можешь задавать переменную как макс, потому что есть такая функция.
    а так рекурсивно ищет максимум в массиве.
     
Top
Загрузка...