OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 17:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 06 Апрель, 2023 16:30 

Зарегистрирован: Вторник, 20 Январь, 2009 20:39
Сообщения: 5
Вот такой, без деталей, код.
CONST N = 8;
L = 1;
R = 18;
PROCEDURE AnyThing;
BEGIN
END AnyThing;
PROCEDURE Srch ( i : INTEGER );
VAR k : INTEGER;
BEGIN
FOR k := L TO R DO
IF i < N THEN Srch (i+1)
ELSE AnyThing
END
END
END Srch;
PROCEDURE Main*;
BEGIN
Srch (0)
END Main;

Всё работает, когда N,L,R малы. Стоит поставить так как выше приведено (8, 1, 18),
то система зависает.
Рискну предположить, что-то типа исчерпания стека?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Апрель, 2023 17:10 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
N вам ограничивает глубину поиска, а R — ширину. вы задали огромное рекурсивное ~(R^N)!-мерное поле поиска. простите, точную формулу сейчас не могу (написаная — чушь, конечно), но там совершенно астрономическое число получается. со стеком всё в порядке (глубина всего N), проблема именно в огромной области, которую всю надо перебрать. при нехватке стека среда просто покажет трап.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Апрель, 2023 17:24 

Зарегистрирован: Вторник, 20 Январь, 2009 20:39
Сообщения: 5
R^N или N^R?...
Да, Трап выкидывает. Но не всегда, чаще просто виснет, приходится принудительно завершать ББ и снова запускать.
В общем, я, конечно, понимал, что широкий и глубокий поиск.
Но смутило, что во FPC и PascalABC.NET работает.
Конечно, безмерно долго, но, по крайней мере, не виснет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Апрель, 2023 17:35 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
да фиг его знает, какие там степени, я специально ещё и факториал воткнул, чтобы окончательно испугать. идея не в том, чтобы точно вычислить всё поле, а чтобы испугаться как следует.

и да, оно не виснет, оно работает. просто компилятор в BB не старается в оптимизации, разумно предполагая, что оптимизация алгоритмов человеком даст больший выигрыш, чем куча хрупкого и подверженого ошибкам кода оптимизатора. собственно, все виртовские компиляторы написаны в таком стиле.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Апрель, 2023 17:38 

Зарегистрирован: Вторник, 20 Январь, 2009 20:39
Сообщения: 5
спасибо, что откликнулись.
перепишу в итеративном варианте. хотя в рекурсивном красивее и нагляднее.
спасибо.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB