Форум программистов, компьютерный форум CyberForum.ru

Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива - C++

Восстановить пароль Регистрация
 
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
27.09.2012, 11:17     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива #1
Помогите решить
Напишите рекурсивную функцию recursiveMinimum, которая принимает массив
и размер массива как аргументы и возвращает наименьший элемент массива.
Функция должна прекращать свою работу и возвращаться, если принимаемый
массив имеет один элемент.

Вот что у меня получилось Дальше не знаю как сделать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int recursiveMinimum(const int arr[], int size)
{
    if (size == 1) return arr[size-1];
    else
        ...
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    
 
    system("pause");
    return 0;
}
Мне бы эту функцию дописать. recursiveMinimum()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 11:17     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива
Посмотрите здесь:

C++ Создать функцию, которая возвращает количество отрицательных элементов массива
C++ Написать функцию, которая возвращает максимальный элемент одномерного массива
C++ Написать функцию getElem, которая возвращает ссылку на i - тый элемент массива
C++ Напишите рекурсивную функцию, которая возвращает среднее из n элементов массива чисел
Создать функцию, которая возвращает количество двузначных элементов массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
27.09.2012, 11:48     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива #2
C++
1
2
3
4
5
6
7
8
9
10
int recursiveMinimum(const int arr[], int size)
{
    if (size == 1) return arr[0];
    else
        {
                int a=recursiveMinimum(arr,size/2);
                int b=recursiveMinimum(arr+size/2,size-size/2);
                return a>b?a:b;
        }
}
как-то так
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
27.09.2012, 12:13  [ТС]     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива #3
Так она у меня максимальное возвращает. А если поменять return a>b?a:b; То тогда минимальное.
C++
1
return a<b?a:b;
Спасибо
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
27.09.2012, 13:15     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива #4
Цитата Сообщение от vndtta Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
int recursiveMinimum(const int arr[], int size)
{
    if (size == 1) return arr[0];
    else
        {
                int a=recursiveMinimum(arr,size/2);
                int b=recursiveMinimum(arr+size/2,size-size/2);
                return a>b?a:b;
        }
}
как-то так
А можете подробнее расписать?
А то я с рекурсией как-то не могу подружиться совсем....почему bvtyyj siize\2 b arr+size/2/////size-size\2.......
Почему так а не по другому?
как вы строите алгоритм чтобы определить что нужно возвращать?....
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
27.09.2012, 13:48     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива #5
Цитата Сообщение от Elfenlide Посмотреть сообщение
А можете подробнее расписать?
А то я с рекурсией как-то не могу подружиться совсем....почему bvtyyj siize\2 b arr+size/2/////size-size\2.......
Почему так а не по другому?
как вы строите алгоритм чтобы определить что нужно возвращать?....
ну это просто массив разделенный на две части
мы возвращаем минимум из 2 результатов рекурсивного вызова по каждой части массива
min( min(arr{0} arr{1} ... arr{ [size/2] -1 } ) min( arr{ [size/2] } arr{ [size/2]+1 } ... arr{ size-1 } )

можно разделить на 3 части и или 10 все равно,
можно брать элемент и сравнить его с минимумом оставшейся части массива
C++
1
2
3
4
5
...
else{
   int tmp=recursiveMinimum(arr,size-1)
   return arr[size-1]<tmp?arr[size-1]:tmp;
}
просто в условии ничего нет о том какой метод использовать
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
27.09.2012, 14:03     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива #6
Цитата Сообщение от vndtta Посмотреть сообщение
ну это просто массив разделенный на две части
мы возвращаем минимум из 2 результатов рекурсивного вызова по каждой части массива
min( min(arr{0} arr{1} ... arr{ [size/2] -1 } ) min( arr{ [size/2] } arr{ [size/2]+1 } ... arr{ size-1 } )

можно разделить на 3 части и или 10 все равно,
можно брать элемент и сравнить его с минимумом оставшейся части массива
C++
1
2
3
4
5
...
else{
   int tmp=recursiveMinimum(arr,size-1)
   return arr[size-1]<tmp?arr[size-1]:tmp;
}
просто в условии ничего нет о том какой метод использовать
Понятно, спасибо
Yandex
Объявления
27.09.2012, 14:03     Создать рекурсивную функцию recursiveMinimum, которая возвращает наименьший элемент массива
Ответ Создать тему
Опции темы

Текущее время: 13:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru