С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/163: Рейтинг темы: голосов - 163, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 6

Поиск максимального элемента одномерного массива (рекурсией)

05.04.2012, 18:35. Показов 30422. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С помощью рекурсивной функции
осуществить поиск максимального
элемента одномерного массива

Добавлено через 51 секунду
Ой тоесть функций)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.04.2012, 18:35
Ответы с готовыми решениями:

Нахождение максимального элемента одномерного массива
написать программу которая использует функцию для нахождения максимального по модулю элемента массива только пожалуйста попроще и чтоб в...

Поиск максимального среди отрицательных элементов одномерного массива
Доброго времени суток! Задача следующая: В массиве Х, содержащем 14 элементов, определить максимальный элемент среди отрицательных...

Для одномерного массива, состоящих из n целых чисел: Найти номер максимального элемента;
Для одномерного массива, состоящих из n целых чисел: Найти номер максимального элемента;

9
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
05.04.2012, 19:10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <time.h>
using namespace std;
int search(int *array,int max_number, int current_index,int size)
{
 int temp=0;
 if (array[current_index]>max_number) { temp=current_index; max_number=array[current_index]; }
 if (current_index==size-1) return temp;
 int temp2=search(array,max_number,current_index+1,size);
 if (temp<temp2) return temp2; else return temp;
}
 
int main()
{
 cout<<"Enter size of array: ";
 int N;
 cin>>N;
 int *a=new int[N];
 srand(time(NULL));
 for (int i=0;i<N;i++) 
  { 
   a[i]=rand()%100;
   cout<<a[i]<<" ";
  }
 int max_index=search(a,a[0],1,N);
 cout<<"\nMaximum element a["<<max_index<<"]="<<a[max_index]<<endl;
 system("pause");
 delete [] a;
 return 0;
}
Вроде пашет, но наверное можно красивее это написать, не люблю рекурсии
1
4 / 4 / 3
Регистрация: 05.04.2012
Сообщений: 9
05.04.2012, 23:23
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <time.h>
using namespace std;
 
int search( int *array, int array_size )
{
    static int maxVal = 0;
    static int currIndex = 0;
    static int memIndex = 0;
 
    if( array_size ) {
        if( *array > maxVal ) {
            maxVal = *array;
            memIndex = currIndex;
        }
        currIndex++;
        return search( ++array, --array_size );
    }
    return memIndex;
}
 
void main()
{
    cout << "Enter size of array: ";
    int arraySize;
    cin >> arraySize;
    int *myArray = new int[ arraySize];
    srand( time(NULL) );
 
    for( int i = 0; i < arraySize; i++ ) 
    { 
        myArray[ i] = rand() % 100;
        cout << myArray[ i] << " ";
    }
    int foundIndex = search( myArray, arraySize );
    cout<<"Index of max elemet is "<< foundIndex << endl;
    cout<<"Value of max elemet is "<< myArray[ foundIndex] << endl;
    system("pause");
}
2
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 6
09.04.2012, 16:44  [ТС]
Спасибо!А без iostream ,простым способом можете?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
09.04.2012, 17:00
Цитата Сообщение от ERZ19 Посмотреть сообщение
простым способом можете?
А то!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int * max_element(const int * arr, const size_t size) {
    return ( size < 2 ) ? (int*)arr : ( *arr < *(arr + size - 1) ) ? max_element(arr + 1, size - 1) : max_element(arr, size - 1);
}
 
#define SIZE 5
 
int main(void){
    int arr[SIZE] = { 3, 1, 2, 5, 4 }, i;
    
    printf("Array: ");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", arr[i]);
    printf("\nMax element: %d\n", *max_element(arr, SIZE));
    
    return 0;
}
2
0 / 0 / 0
Регистрация: 18.07.2016
Сообщений: 4
20.05.2019, 21:28
easybudda, а можешь сделать эту функцию рекурсивной?

C++
1
2
3
4
5
6
7
8
9
int checkRow(double row[S]) {
    double min = row[0];
    for (int i = 1; i < S; i++)
        if (row[i] < min)
            min = row[i];
    if (row[0] == min)
        return 1;
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
21.05.2019, 00:41
Цитата Сообщение от Vitalikkkk Посмотреть сообщение
а можешь сделать эту функцию рекурсивной?
Могу. Поправь, если ошибаюсь: функция возвращает 1 если первый элемент имеет минимальное значение?
C
1
2
3
int checkRow(double * row, size_t size) {
    return ( size < 2 ) ? 1 : ( row[size - 1] < row[0] ) ? 0 : checkRow(row, size - 1);
}
1
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
21.05.2019, 02:05
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <string>
 
using namespace std;
 
#include <stdio.h>
 
template <typename T>
T ArrMin(T Arr[], int Count) {
 return Count == 0 ? Arr[0] : ArrMin(Arr + (Arr[0] > Arr[Count]), Count - 1);
}
 
template <typename T>
T ArrMax(T Arr[], int Count) {
 return Count == 0 ? Arr[0] : ArrMax(Arr + (Arr[0] < Arr[Count]), Count - 1);
}
 
#define SIZE 7
 
int main(void){
    double arr[SIZE] = {-7, 3, 5, 2, 545645, 5, 4 };
    
    std::cout << "\nMin: " << ArrMin(arr, SIZE - 1);
    std::cout << "\nMax: " << ArrMax(arr, SIZE - 1);
    
    return 0;
}
0
0 / 0 / 0
Регистрация: 18.07.2016
Сообщений: 4
21.05.2019, 16:10
easybudda, как с тобой связаться можно?
0
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 20
30.11.2020, 12:58
Всем привет. Решаю задачки с учебника. Попалась такая же задача: написать функцию, которая занималась бы поиском максимального элемента в массиве. Начал думать над ней вчера, промучался весь день, но желаемого результата не получил. И только сегодня вечером я смог таки её решить, благодаря одной маленькой детали: нужно было воспользоваться статической переменной, всего-то и делов. Рад, что получилось её решить, а то я уже разуверовал в себя!

Вот моё решение, делюсь им с вами на радостях:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
 
int func (int arr[], int n) {
static int max {};
    if (n == 1) 
        max = arr[0];
    else 
        max = (func(arr, n - 1) > arr[n-1]) ? max : arr[n-1];
    return max;
}
 
 
 
int main() {
    
    int arr [9] = {21, 52, 7, 47, 5, 8, 11, 20, 48};
    
    std::cout << func(arr, 9) << std::endl;
    
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2020, 12:58
Помогаю со студенческими работами здесь

Поиск максимального элемента массива
Всем вечер добрый Вот моя ситуация: дано два одномерных массива А и Б допустим как мне найти максимальный G если G=a*a+b*b как...

Поиск максимального элемента массива
Задание из ОГЭ , требуется написать, какое число выведет программа. Почему выводит 41 а не 20, ведь 20 не больше 20, по идее цикл должен...

Поиск максимального элемента массива и его индекса
Генератор случайных чисел от 15 до 30 целое число А создайте массив и выведите на экран. Найдите самый большой элемент массива и его...

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

Поиск и замена максимального элемента двумерного массива
Добрый день, надо написать динамический массив который находит максимальный элемент и меняет его с элементом A.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru