Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

solowey
Статус: Студент
Рейтинг: 44
∙ повысить рейтинг »
CradleA
Статус: Профессор
Рейтинг: 21
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 14
∙ повысить рейтинг »

∙ Алгоритмы и теория программирования

Номер выпуска:217
Дата выхода:07.10.2018, 21:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:25 / 9
Вопросов / ответов:3 / 7

Консультация # 118525: Здраствуйте, уважаемые эксперты. Помогите пожалуйста найти информацию о написании быстродействующих программ, т.е. те алгоритмы по которым следует писать программы чтобы они работали быстро. Я знаю что есть такие тонкости при которых в зависимости от того или иного оператора программа работает быстрее. Если в программе есть цикл, то это уж...
Консультация # 142869: Здравствуйте, помогите, пожалуйста: Всякую ли рекурсию можно превратить в итерацию? Если да, то приведите аргументы «за». Если нет, то приведите пример....
Консультация # 42801: Здравствуйте, уважаемые эксперты. Есть задача с рекурсией "вывести целое положительное число используя print(n), где n=0..9". Голова уже кипит. Не подскажите ли вы, как организовать эту рекурсивную функцию. ...

Консультация # 118525:

Здраствуйте, уважаемые эксперты.

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

Заранее спасибо.

Дата отправки: 15.01.2008, 06:37
Вопрос задал: MARTALEX
Всего ответов: 1
Страница онлайн-консультации »


Консультирует X-men:

Здравствуйте, MARTALEX!
Некоторые методы оптимизации кода представлены здесь
http://www.cyberguru.ru/programming/cpp/c-high-quality-code-gen-page3.html
Вот здесь очень полезная книга (в том числе и об оптимизации) (21 МБ)
http://v1.ifolder.ru/3151746
Программа для просмотра файлов с расширением *.djvu (1.8 Мб)
http://www.skan.ru/file/djvureader.zip

Консультировал: X-men
Дата отправки: 15.01.2008, 16:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 142869:

Здравствуйте, помогите, пожалуйста:
Всякую ли рекурсию можно превратить в итерацию?
Если да, то приведите аргументы «за».
Если нет, то приведите пример.

Дата отправки: 02.09.2008, 04:03
Вопрос задал: Капранов Павел Павлович
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Гнедов Андрей:

Здравствуйте, Капранов Павел Павлович!
Я считаю, что не всякую. Существенное отличие рекурсии от итерации в том, что при рекурсии идет на каждом шаге "вглубь" происходит увеличение объема данных, а при итерации объем данных не изменяется.
Примером может послужить алгоритм разбора транслятором математического выражения со скобками. Заранее можно ограничить глубину вложенности и построить итеративный процесс анализа выражения. При этом на каждой итерации заполняются заранее подготовленные структуры данных для каждого уровня вложенности.
Но если глубину вложенности скобочных выражений не ограничивать, то работает только рекурсия.

Консультировал: Гнедов Андрей
Дата отправки: 02.09.2008, 13:16
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, Капранов Павел Павлович!

Любую рекурсию можно преобразовать в итерацию и наоборот.
Доказательство можете посмотреть тут.
Вопрос стоит только в том, насколько это легко и эффективно, к примеру:

procedure triangle(x,y,a:integer);{пусть (x,y) — положение прямого угла, a — длина катета}
begin
	line(x, y, x + a, y);
	line(x, y, x, y - a);
	line(x + a, y, x, y - a);{построили контур большого треугольника}
	if (a>1) then begin{если наш треугольник должен содержать внутренние —построим их по тому же правилу что и большой}
		triangle(x, y, a div 2); {меньший треугольник, у которого общий с большим прямой угол}
		triangle(x, y — a div 2, a div 2);{верхний треугольник}
		triangle(x + a div 2, y, a div 2);{правый треугольник}
	end;
end;

Взято из Методики подготовки учащихся к олимпиадам. File Format: Microsoft Word.
Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 02.09.2008, 15:34
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 42801:

Здравствуйте, уважаемые эксперты. Есть задача с рекурсией "вывести целое положительное число используя print(n), где n=0..9". Голова уже кипит. Не подскажите ли вы, как организовать эту рекурсивную функцию.

Дата отправки: 12.05.2006, 07:44
Вопрос задал: Демченко Артем
Всего ответов: 4
Страница онлайн-консультации »


Консультирует Kazakh:

Здравствуйте, Демченко Артем!

В приложении пример на Паскале.
Печатаются от 9 до 0.
Небольшие изменеия и она будет печатать с 0 до 9.

Приложение:

Консультировал: Kazakh
Дата отправки: 12.05.2006, 08:13
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Ayl:

Здравствуйте, Демченко Артем!

Вообще-то это делается следующим алгоритмом:

Procedure PrintNum (n : LongInt);
begin
if n < 0 then exit;

if n > 10 then PrintNum (n div 10);

print (n mod 10);
end;

Консультировал: Ayl
Дата отправки: 12.05.2006, 11:59
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Jeka911:

Здравствуйте, Демченко Артем!

Если я правильно понял, выводим любое положительное число, но по цифрам, функцией someprint(n);, где n=(0,9);

func (int n)
{
int nn = n%10; //(mod);
int xn = n/10; //(div);
if (n>=10) func(xn);
someprint(nn);
}

Так как вызов рекурсивный функции до вывода цифры, то знаки будут выводиться от старших к младшим, вроде так.

Консультировал: Jeka911
Дата отправки: 12.05.2006, 14:03
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Селиванов Александр Владимиров:

Здравствуйте, Демченко Артем!
Не знаю, на каком языке вам нужно, поэтому напишу на абстрактном:

вывод(целое Х)
{
если(Х = 0)
выход;
n = остаток_от_деления Х на 10;
Х = целая_часть_от_деления Х на 10;
вывод(Х);
print(n);
}

Консультировал: Селиванов Александр Владимиров
Дата отправки: 13.05.2006, 22:49
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное