Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос о С++ рекурсивные функции

Елизавета Данилова Профи (521), закрыт 12 лет назад
Помогите кто-нибудь, прошу)
Вот только начали изучать С++..еще толком не разбираюсь
Задание было Написать программу с рекурсивной функцией. постановка задачи: пользователь вводит какое то количество чисел (ограничение можно ставить любое... я выбрала что б вводили 10 чисел) . Надо найти соотношение максимально числа ряда и минимального.. .
Мудрила-мудрила.. . вот что вышло:
#include <iostream.h>
#include <conio.h>

#define N 10

float maxi(float);

float max(float a[N], int i)
{for (i=0; i<n;++i)>>a;
int max=0;
for( i=0;i<n;++i)>) max=i;
return i;
}

unsigned mini (float);
float min(float a[N], int j)
{for (j=0;j<n;++j)>>a[j];
int min=0;
for(int j=0;j<n;++j)>a[j]) min=j;
return j;
}

void main()
{ float a[N];
int i,j;
cout<<"\n Vvedite stroku iz 10 chisel: ";
for(i=0;i<n;++i)>>a; for(j=0;j<n;++j)>>a[j];
int max1;
max1=maxi(a);
int min1;
min1=mini(a[j]);
cout<<"\n max= "<
Дополнен 12 лет назад
cout<<"\n max= "<
Дополнен 12 лет назад
cout<<"\n max= "<
Дополнен 12 лет назад
ладно, что-то всю программу здесь писать не хочет)) ) но проблема тут с самой рекурсией
Лучший ответ
inga zajonc Искусственный Интеллект (194453) 12 лет назад
Попробуем найти минимум так:
int min(int *a, int start, int end)
{ if (start==end) return a[start];
int x = min(a, start+1, end);
if (x < a[start]) return x; else return a[start];
}
Вызываем функцию с параметрами start = 0, end =n-1 (n - число элементов)
Выход из функции произойдёт, когда длина массива будет равна 1 (1 строка) .
Вторая строка - рекурсивно вызываем функцию с start равным 1, 2, и так далее.
Когда дойдём до последнего элемента, то есть выполнится условие в первой строке, x будет равен последнему элементу массива, и возвращен в предыдущий вызов функции.
В третьей строке сравниваем его с предыдущим элементом, и так до тех пор пока не выйдем в первую функцию, то есть на самом деле просмотр массива идёт с конца.
Не удивляйтесь, что х всё время не определён - третья строка выполняется только после выполнения условия в первой.

Может описание несколько сумбурно, но рекурсию придется как-то понять.
Остальные ответы
Юрий-17 Гений (76482) 12 лет назад
"всю программу здесь писать не хочет" :) это Вы не хотите! Уж пора бы научиться расставлять пробелы, как их необходимо расставлять для данного редактора, особенно с того момента, где у Вас прекращается вывод или выкладывать на http://pastebin.com/
Похожие вопросы