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

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

Восстановить пароль Регистрация
 
Staffi
 Аватар для Staffi
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 26
19.02.2014, 13:46     Поиск минимума с помощью рекурсивной функции #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
#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 секунд
буду очень благодарен за пояснения
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 13:46     Поиск минимума с помощью рекурсивной функции
Посмотрите здесь:

C++ Функции. Поиск минимума и максимума.
C++ Дана квадратная матрица [3][3]. Вычислить n-ую степень этой матрицы с помощью рекурсивной функции.
C++ Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных чисел
С помощью рекурсивной функции осуществить вывод на экран элементов одномерного массива C++
С помощью рекурсивной функции вычислить значение выражения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 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;
}
Staffi
 Аватар для 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).. а вот с этой строкой проблема.. если можешь поясни пожалуйста
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 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;
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6165 / 2894 / 282
Регистрация: 04.12.2011
Сообщений: 7,694
Записей в блоге: 3
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;
}
проверьте.
Yandex
Объявления
19.02.2014, 14:37     Поиск минимума с помощью рекурсивной функции
Ответ Создать тему
Опции темы

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