Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
к8
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 38
1

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

14.05.2014, 19:18. Просмотров 1118. Ответов 10
Метки нет (Все метки)

Помогите!Нужно написать рекурсивную функцию для нахождения минимального элемента массива
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 19:18
Ответы с готовыми решениями:

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

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

Рекурсивная функция нахождения максимального и минимального значения
Рекурсивная функция нахождения максимального и минимального значения

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

Рекурсивная функция нахождения максимального элемента в списке
Саму функцию нахождения максимального элемента написал. Мне только нужно...

10
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
14.05.2014, 19:38 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void FindMin(int* mass,int n,int i,int& min)
{
   if(i>=n)
         return;
   if(i==0)
   {
         min=mass[0];
         i=1;
   }
   if(mass[i]<min)
         min=mass[i];
   FindMin(mass,n,i+1,min);
}
0
к8
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 38
14.05.2014, 19:52  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
return;
а какое значение возвращает?
0
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
14.05.2014, 19:54 4
Цитата Сообщение от к8 Посмотреть сообщение
а какое значение возвращает?
Никакое. Функция ведь void
0
к8
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 38
14.05.2014, 19:59  [ТС] 5
Цитата Сообщение от zss Посмотреть сообщение
Никакое. Функция ведь void
у меня почему-то независимо от того какое бы ни было минимальное значние,всегда в ответе 1.

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>
 
using namespace std;
 
void FindMin(int* mass,int n,int i,int& min)
 {
    if(i>=n)
          return;
    if(i==0)
    {
          min=mass[0];
          i=1;
    }
    if(mass[i]<min)
          min=mass[i];
    FindMin(mass,n,i+1,min);
 }
 
main()
{
    int mass[100];
    int n;
    cout<<"n=";cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"mass["<<i<<"]=";cin>>mass[i];
    }
    cout << "min = "<<FindMin<<endl;
    return 0;
}
0
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
14.05.2014, 20:02 6
строку 24 замените на
C++
1
2
3
int min;
FindMin(mass,n,0,min);
cout << "min = "<<min<<endl;
0
к8
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 38
14.05.2014, 20:10  [ТС] 7
спасибо большое
0
outoftime
║XLR8║
764 / 663 / 212
Регистрация: 25.07.2009
Сообщений: 3,320
Записей в блоге: 5
14.05.2014, 20:21 8
к8,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template<typename T>
T min(T *a, size_t n, size_t i, T m) {
    return i < n ? min(a, n, i + 1, std::min(m, a[i])) : m;
}
 
template<typename T>
T min(T *a, size_t n) {
   return min(a, n, 1, *a);
}
 
int main(int argc, char **argv) {
    int a[] = {1, 2, 3, 4, 0, 6}; 
    std::cout << min(a, 6) << std::endl;
}
Чем короче код тем понятнее.
0
TrueBit
96 / 96 / 47
Регистрация: 19.11.2012
Сообщений: 195
14.05.2014, 21:13 9
Попробуйте так(end должен быть больше или равен begin):

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
#include <iostream>
#include <algorithm>
 
int * find_min(int * begin, int * end) {
    if (begin==end) return end;
 
    if((end-begin) == 1)
        return begin;
 
    if((end-begin) == 2) {
        if(*begin<=*(begin+1))
            return begin;
        else
            return begin+1;
    }
 
    int * first = find_min(begin,begin + (end-begin)/2);
    int * second = find_min(begin + (end-begin)/2, end);
    if(*first < *second)
        return first;
    else
        return second;
}
 
int main() {
    int a[] = { 6,43,12,5,12,41,12,44,2,55 };
 
    std::cout <<         *find_min(a,a+sizeof(a)/sizeof(int)) << std::endl;
    std::cout << *std::min_element(a,a+sizeof(a)/sizeof(int)) << std::endl;
 
    return 0;
}
0
tegauss
14.05.2014, 21:51
  #10

Не по теме:

outoftime, Ваш вариант конечно продвинут, но для новичка совершенно непонятен, ИМХО :)

0
outoftime
14.05.2014, 23:04     Рекурсивная функция для нахождения минимального элемента массива
  #11

Не по теме:

tegauss, Зато есть куда расти.

0
14.05.2014, 23:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 23:04
Привет! Вот еще темы с ответами:

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

Составить программу для нахождения минимального элемента массива
1)Известен массив x1,х2,х3,…,х7. Составить программу для нахождения...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru