Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: cheops (27.12.2011 в 16:01) Успели уже ответить, ошибка была в предыдущей программе, вот более правильный (да и более экономный) вариант
#include<iostream> using namespace std; int min(const int a[], int left, int right) { int x, y, m, center; // Точка возврата из рекурсии if (left == right) return a[left]; // Обходим проблему "биений" рекурсии if((left - right) == 1 || (right - left) == 1) { return a[left] < a[right] ? a[left] : a[right]; } // Вычисляем середину m = (left + right) / 2; // Минимумы слева и справа от середины x = min(a, left, m); y = min(a, m, right); // Выбираем минимальный из результатов if (x < y) return x; else return y; } void main() { // int mas[5]={1,2,3,4,5}; int mas[8]={1,6,4,4,3,2,3,6}; cout << min(mas, 0, 7) << endl; system("pause"); }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: