Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Staffi
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 26
#1

Поиск минимума с помощью рекурсивной функции - C++

19.02.2014, 13:46. Просмотров 715. Ответов 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
#include<iostream>
#include <time.h>
using namespace std;
 
 
int mina(int ar[], int n){
 
    int min = ar[0];
    for (int i = 0; i < n; i++){
        if (ar[i] < min){ min = ar[i]; }
 
    }
    cout << "min" << min;
    return min;
}
 
void main(){
    srand(time(NULL));
    const int n = 10;
    int ar[n];
    for (int i = 0; i<n; i++){
        ar[i] = rand() % 10;
        cout << ar[i];
    }
    mina(ar, n);
}

что необходимо для выполнения поиска минимума с помощью рекурсивной функции?

Добавлено через 56 секунд
буду очень благодарен за пояснения
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 13:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск минимума с помощью рекурсивной функции (C++):

С помощью рекурсивной функции вычислить значение выражения - C++
С помощью рекурсивной функции вычислить x^n по формуле: x^n=1 при n=1, x^n=1/x^|n| при n&lt;0, x^n=x*x^(n-1) при n&gt;0. все три уравнения...

Найти минимум элементов массива с помощью рекурсивной функции min1(k) - C++
Есть небольшая задача: Дан массив целых чисел. Найти минимум его элементов с помощью рекурсивной функции min1(k), возвращающей минимум...

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

Написать программу для вычисления выражения с помощью рекурсивной функции - C++
Помогите написать программу C++ для вычисления выражения an. Вычисление организовать в виде рекурсивной функции. {a}_{n} =...

С помощью рекурсивной функции вычислить сумму элементов одномерного массива - C++
С помощью рекурсивной функции вычислить сумму элементов одномерного массива,помогите пожалуйста!Просьба не мудрить и написать как можно...

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

4
anmartex
...
1708 / 1201 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
19.02.2014, 14:08 #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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int mina(int array[], unsigned n) {
    int min = *array;
    if (n > 1) {
        min = mina(array + 1, n - 1);
    }
    return (*array < min) ? *array : min;
}
 
int main() {
    srand(time(NULL));
    const int n = 10;
    int ar[n];
    for (int i = 0; i < n; i++) {
        ar[i] = rand() % 10;
        cout << ar[i] << " ";
    }
    cout << endl;
 
    cout << "min = " << mina(ar, n);
 
    return 0;
}
0
Staffi
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 26
19.02.2014, 14:14  [ТС] #3
anmartex, огромное спасибо.. но ни хера не понял.,,

Добавлено через 46 секунд
*array почему со * ???

Добавлено через 2 минуты
anmartex, это новая переменная.. разобрался. наверно

min = mina(array + 1, n - 1).. а вот с этой строкой проблема.. если можешь поясни пожалуйста
0
anmartex
...
1708 / 1201 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
19.02.2014, 14:19 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Staffi Посмотреть сообщение
*array почему со * ???
Ну раз смущает, то можно и так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int mina(int array[], unsigned n) {
    // Принимаем первый элемент за минимальный
    int min = array[0];            
    // Если в массиве больше одного элемента, то
    if (n > 1) {
        // Вызываем саму себя, сместив указатель начала массива
        // на один элемент, соответственно декрементируем количество
        // элементов на 1
        min = mina(array + 1, n - 1);
    }
    // Возвращаем минимальный элемент среди значения текущего
    // элемента и значения элемента, которое вернула предыдущая функция
    return (array[0] < min) ? array[0] : min;
}
Хотя, наверное, было бы правильнее сделать вот так:
C++
1
2
3
4
5
6
7
int mina(int array[], unsigned n) {
    if (n < 2) {
        return array[0];
    }
    int min = mina(array + 1, n - 1);
    return (array[0] < min) ? array[0] : min;
}
2
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,715
Записей в блоге: 5
19.02.2014, 14:37 #5
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
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
template <class T>
T max_T(T *arr, int n, T carrent_max){
if( n <= 0 ) return -1 ;
if ( n == 1 )return ( arr[0] >= carrent_max ) ? arr[0] : carrent_max; 
 
if ( arr[0] > carrent_max ) carrent_max = arr[0]; 
 
return max_T ((&arr[0]+1), n -= 1, carrent_max);
}
 
int main(){
const int n = 9;
 
int arr_i[] = {1, 2, 3, 25, 4, 5, 8, 11, 2};
cout << max_T(arr_i, n, arr_i[0]);
cout<<endl;
 
unsigned int arr_c[] = {1, 2, 3};
cout << max_T(arr_c, 3, arr_c[0]);
cout<<endl;
 
float arr_f[] = {1.1};
cout << max_T(arr_f, 1, arr_f[0]);
cout<<endl;
double arr_d[] = {1.1, 2.2};
cout << max_T(arr_d, 2, arr_d[0]);
cout<<endl;
 
cout<<endl<<endl;
system("pause");
return 0;
}
проверьте.
0
19.02.2014, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 14:37
Привет! Вот еще темы с ответами:

Дана квадратная матрица [3][3]. Вычислить n-ую степень этой матрицы с помощью рекурсивной функции. - C++
Помогите сделать эту программу с помощью рекурсивной функции: #include “iostream” using namespace std; #include “cmath” const int...

Функции. Поиск минимума и максимума. - C++
Составить программу для нахождения суммы минимального и максимального значений среди элементов каждой из линейных таблиц Х и Y

Поиск минимума функции методом наискорейшего спуска - C++
Добрый день. Передо мной встала задача: реализовать поиск минимума функции градиентным методом наискорейшего спуска. Я программу решила...

Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных чисел - C++
Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных...


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

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

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