Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2014, 19:21   #1
Vladislavv
Пользователь
 
Регистрация: 30.07.2014
Сообщений: 35
По умолчанию рекурсивная функция для поиска наим знач в массиве

рекурсивная функция (min) для поиска наим знач в массиве. Произвольно выходит из рекурсии по непонятной логике
Код:
#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;
}

Последний раз редактировалось Stilet; 08.09.2014 в 21:35.
Vladislavv вне форума Ответить с цитированием
Старый 08.09.2014, 21:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Э-э-м... С потолка:
Код:
int min (int ar[], int i){
 if(i==(n-1)) return (ar[i]>ar[n])?ar[n]:ar[i];
 int m=min(ar,i+1);
 return (ar[i]>m)?m:ar[i];
}
Не проверял в действии, но по крайней мере я бы думал именно так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.09.2014, 08:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

с того же потолка, та же идея, вид чуть сбоку...

Код:
int min (int ar[], int i){
 if(i>=(n-1))
 {
  return ar[n-1];
 }
 else {
   int m=min(ar,i+1);
   return (ar[i]<m)?ar[i]:m;
 }
}
вызов:
Код:
int mn = min (ar, 0);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2014, 09:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
return ar[n-1];
А-а-а... Э-э-э...
Ну ладно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с процедурами в Delphi - процедура для поиска min, max в массиве и обмена их местами kolia_y Помощь студентам 4 12.12.2013 19:21
необходимо составить подпрограмму для поиска данных в массиве Mainln Помощь студентам 0 06.04.2013 12:15
Вопрос: Функция поиска максимума в массиве. krugolet Общие вопросы C/C++ 5 20.12.2011 19:14
Рекурсивная процедура поиска значений элементов массива кот Бегемот Помощь студентам 0 18.11.2010 11:38
Рекурсивная функция для нахождения, паскаль ~Mi@mi~ Помощь студентам 3 13.10.2010 19:38