Показать сообщение отдельно
  (#3 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 18.10.2005, 11:20

Цитата:
Originally posted by Винитарх
[b]Напишите конкретно, что Вам нужно сделать в Вашей задаче. Мне кажется, проблемы со стеком возникают по Вашей вине. Опишите задачу и я Вам подскажу как правильно написать цикл.
Проблема не вызвана конкретной задачай, а сама задача неавела на возможные проблемы:
1. Посмотрите код (вариант 2): генерится определенным образом начальный список List0s (целых чисел) из нужного количества элемента, и есть предикат running с кучей мат функций и других вспомогательных предикатов с мат. функциями, который из исходного списка List0s генерит другой список List1s с помошью мат расчетов. Я хотел сделать (см код), что если не нажата кнопка q, повторить расчет списка List1s по новой методом отката и повторного пересчета (бактрейтинг), но у меня не получается сделать так, т.е. при не выполнении 'q' = console::readchar(). происходит откат до running, так как перед ней стоит !, но она не является nondeterm (что бы дыло бы ее пересчет), и текущая ветка work не выполняется и и выполняется другая ветак work.
т.е. можно ли сделать running с мат функциями, где используется math::random() - nondeterm.
или у меня ошибка в коде, что моя идея не коректно работает (так как сейчас поставил перед running предикат succeed, но результат тот же, пересчета нету)

2. Идея выполнять программу пока нажатая кнопка не q имеет два решения (имхо), это методом отката как я хотел сделать выше или рекурсией, как кодом - вариант 1, который для моего случая и оказался работоспособным.
Так вот из книги (которая у вас в отсканированом виде тут выложена, у меня в текстовом) есть рекурсия и цикл, цикл имеет фикс объем, а рекурсия порождает каждый разновые объемы память. Вот как быть с главным циклом программы (я вообще, для будующих своих программ), который должен долго крутится (т.е. я не до конца понял как правильно сделать рекрсию), мой вариант 1 это что?
Ответить с цитированием
Ads