1 / 1 / 2
Регистрация: 30.07.2014
Сообщений: 98
1

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

08.09.2014, 19:21. Показов 3794. Ответов 3
Метки нет (Все метки)

рекурсивная функция (min) для поиска наим знач в массиве. Произвольно выходит из рекурсии по непонятной логике
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
#include <iostream>
#include <ctime>
using namespace std;
 
void input(int ar[], int n);
int min (int ar[], int n);
void out (int ar[], int n);
 
void main (){
const int n=10;
int ar[n];
srand(time(NULL));
input (ar, n);
out (ar, n);
int mn =min (ar, n);
cout <<mn;
}
 
void input(int ar[], int n){
for (int i=0; i<n; i++)
    ar[i]=rand()%50-25;
}
 
int min (int ar[], int n){
    if (ar[n-1]<ar[n-2]){
    ar[n-2]=ar[n-1];
    cout <<" n"<<ar[n-2];
    cout <<" e"<<n;
    if (ar[n-2]==ar[0])
        return ar[n-2];
    else
        return min (ar, n-1);
    }
}
 
void out (int ar[], int n){
for (int i=0; i<n; i++)
    cout <<ar[i]<<"\t";
cout <<endl;
cout <<endl;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2014, 19:21
Ответы с готовыми решениями:

Рекурсивная функция для последовательного поиска в массиве из n целых чисел
Разработать программу, использующую рекурсивную функцию для выполнения задачи. Последовательный...

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

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

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

3
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
09.09.2014, 09:06 2
Выходит? Или выдаёт ошибку? Если второе, то возможно переполнение стека вызовов функций
0
315 / 177 / 73
Регистрация: 18.01.2014
Сообщений: 387
09.09.2014, 10:30 3
Цитата Сообщение от Vladislavv Посмотреть сообщение
Произвольно выходит из рекурсии по непонятной логике
Ну тык логика функции непонятна, вот она и выходит произвольно
C++
1
2
3
4
5
6
7
8
int min(int ar[], int n) {
    if (n == 0) {
        return ar[0];
    } else {
        int m = min(ar, --n);
        return m < ar[n] ? m : ar[n];
    }
}
1
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
09.09.2014, 21:52 4
У Вас в конце должен в m попасть нулевой элемент массива в конце рекурсии, а далее в обратном порядке.
В каждой точке вызова n-индекс какого-то элемента массива. И наименьшее предыдущего вызова (изначально равное первому элементу), сравнивается с текущим элементом: если меньше, то в предыдущую точку вызова возвращается m, иначе ar[n].

Добавлено через 1 минуту

Не по теме:

Хотя за такой код надо руки отрывать)


Эта задача решается очень просто в один цикл

Добавлено через 5 минут

Не по теме:

Блин, на предыдущий ответ написал :D


Вот код с циклом:
C++
1
2
3
4
5
6
7
8
9
int min(int a[], int n) {
if(n == 0)
return 0;
int minV = a[0];
for(int i = 0; i < n; ++i)
if(minV > a[i])
minV = a[i];
return minV;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2014, 21:52
Помогаю со студенческими работами здесь

Рекурсивная функция для вычисления наименьшего общего делителя двух натуральных чисел(применяю Алгоритм Евклида)
Привет,помогите разобраться с заданием.Нужно было разработать и испытать рекурсивную функцию для...

Функция поиска наименьшего общего кратного не работает для больших чисел
Здравствуйте. Помогите, пожалуйста отловить ошибку. Есть задача, написать функцию, принимающую...

Разработать программу поиска наименьшего значения для всех элементов массивов
Ввести n произвольных масовов. Разработать программу поиска наименьшего значения для всех элементов

Программа для нахождение в массиве большего и наименьшего значения
var a:array of integer; i:integer; max:integer; kmax:integer; begin randomize; for i:=1 to...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru