Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/48: Рейтинг темы: голосов - 48, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 09.09.2014
Сообщений: 65
1

Рекурсивная функция для вычисления индекса максимального элемента массива

02.11.2014, 00:38. Показов 8989. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2014, 00:38
Ответы с готовыми решениями:

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

Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов
Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов.

Рекурсивная функция поиска максимального элемента массива
Написать рекурсивную функцию для вычисления максимального элемента массива из п элементов. выдает...

Рекурсивная функция для вычисления индекса максимального элемента массива
Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов.

6
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
02.11.2014, 11:05 2
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
40
41
42
43
44
45
46
47
48
49
50
void max_search(const int * nums_ptr, unsigned index, const unsigned size, int max)
{
    if (index < size) {
        
        if (nums_ptr[index] > max)
            max = nums_ptr[index];
 
        max_search(nums_ptr, ++index, size, max);
    }       
}
 
 
unsigned max_search(const int * nums_ptr, const unsigned size, int max)
{
    static unsigned call = 1;
    unsigned res = 0;
 
    if (call < size) {
    
        if (*nums_ptr > max)
            max = *nums_ptr;
        
        call += 1;
        res += max_search(++nums_ptr, size, max);
 
        return res;
    }
    else
        return 0;
}
 
 
int main()
{
    const unsigned size = 10;
    int nums[size] = {4, 2, 8, -3, 0, 2, 8, 6, 4, 1};
    unsigned index = 0;
    int max = nums[index];
  
    max_search(nums, ++index, size, max);
    ....                                                     // дальнейшие операции
 
    // или
    const int * nums_ptr = nums;
 
    index = max_search(++nums_ptr, size, max);
    ....
 
    return 0;
}
0
2 / 2 / 0
Регистрация: 09.09.2014
Сообщений: 65
02.11.2014, 11:57  [ТС] 3
StackOverflow, спасибо, но не работает
0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
02.11.2014, 13:17 4
Прошу прощения, не проверял. Теперь поправил.
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
void max_search(const int * nums_ptr, unsigned index, const unsigned size, unsigned& max)
{
    if (index < size) {
 
        if (nums_ptr[index] > nums_ptr[max])
            max = index;
 
    max_search(nums_ptr, ++index, size, max);
    }
}
 
 
unsigned max_search(const int * nums_ptr, const unsigned size, int max)
{
    static unsigned call = 1;
    unsigned res = 0;
 
    if (call < size) {
 
        int left = nums_ptr[call];
        int right = nums_ptr[max];
 
        if (left > max)
            max = call;
 
        call += 1;
        res = max_search(nums_ptr, size, max);
 
        return res;
    }
    else
        return max;
}
Добавлено через 13 минут
Во второй функции снова закралась ошибка. Ещё раз поправил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
unsigned max_search(const int * nums_ptr, const unsigned size, int max)
{
    static unsigned call = 1;
    unsigned res = 0;
 
    if (call < size) {
        int left = nums_ptr[call];
        int right = nums_ptr[max];
 
        if (left > right)
            max = call;
 
        call += 1;
        res = max_search(nums_ptr, size, max);
 
        return res;
    }
    else
        return max + 1;
}
2
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
02.11.2014, 13:24 5
StackOverflow, что-то много кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
 
int FindMax(int* arr, int arrSize, int currPos = 0)
{
    if(currPos >= arrSize)
        return 0;
    int temp = FindMax(arr, arrSize, currPos+1);
    return(arr[temp] > arr[currPos] ? temp : currPos);
}
 
 
int main()
{
    int arr[] = {6, 7, 3, 4, -16, 2};
    std::cout << FindMax(arr, sizeof(arr) / sizeof(int));
    return 0;
}
1
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
02.11.2014, 13:52 6
Да уж, давненько меня здесь не было. Ну ничего, наверстаю
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
02.11.2014, 17:29 7
Лучший ответ Сообщение было отмечено балаболка как решение

Решение

Dani, темно.
Вот так нагляднее, по-моему:
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
40
41
/////////////////////////////////////////////////////////////////////////////////////////
//Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов.
/////////////////////////////////////////////////////////////////////////////////////////
#include <conio.h>
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
int get_max_of_arr
    (
        int     *   arr,
        int         size
    )
{
    return  --size
                ?   std::max
                        (
                            arr[size],
 
                            get_max_of_arr
                                (
                                    arr,
                                    size
                                )
                        )
 
                :   *arr;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    int arr[] = {6, 7, 3, 4, -16, 2};
 
    std::cout   <<  get_max_of_arr
                        (
                            arr,
                            sizeof(arr) / sizeof( *arr )
                        )
 
                <<  std::endl;
 
    getch();
}
2
02.11.2014, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2014, 17:29
Помогаю со студенческими работами здесь

Рекурсивная функция для вычисления максимального элемента из n-элементов.
Очень нужна помощь в написании программы, что ниже. Заранее ОГРОМНОЕ спасибо! - Задача 1....

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

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

Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов
Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru