![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
![]()
народ! помогите выйти из рекурсии. я придумал такой вариант(реальный код уже потерян):
Код:
Упс...
|
![]() |
![]() |
![]() |
#2 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
![]()
это опять же нерационально. да, при входе в процедуру программа будет сразу выходить, но сколько таких входов еще будет? в дальнейший цикл программа уже не пойдет, но все предыдущие входы будут использованы. для экономии времени уж лучше как я предлагаю...
Упс...
|
![]() |
![]() |
![]() |
#4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
А о стеке вы не подумали?
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 28.09.2008
Сообщений: 344
|
![]() Цитата:
у тебя а передается не по ссылке и q(a); ничего не делает попробуй для начала Код:
|
|
![]() |
![]() |
![]() |
#6 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
L_M, ваш первый вариант никогда не завершится, так как "a" не увеличивается. Поставте "var", и всё случится. И еще, зачем стока if-ов и какой-то "f".
Код:
|
![]() |
![]() |
![]() |
#7 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
![]()
Да нет, этот код я написал просто для примера, он конечно не верен. if нужен как раз для выхода, т.е. перед каждым оператором проверяется, нужно ли его выполнять или пора завершить рекурсию. например в таком коде
Код:
P.S. еще один вариант можно применять для некоторых задач - завершать программу при достижении условия - только не знаю как это сделать в консоли. и еще: стек конечно слово красивое, но ничего не объясняет. или выы предлагаете чтобы при достижении условия программа сама вытаскивала из стека и тем самым прекращалась(хороший вариант, но не знаю возможен ли)? или имеется в виду, что прекращать ее не надо - стек переполниться и она сама завершиться?
Упс...
Последний раз редактировалось L_M; 02.10.2008 в 22:19. |
![]() |
![]() |
![]() |
#8 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
А как вам такой вариант
Код:
Но вы сами говорили: Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
не выход из рекурсии а условие продолжения рекурсии
function f(par): integer; begin if par<100 then result:= par + f(par+1); end;
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#10 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Я ж и говорю, все зависит от поставленной задачи.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсии | Logan | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.05.2008 08:52 |
Паскаль рекурсии СРОЧНО | Solana | Помощь студентам | 3 | 14.12.2007 17:49 |
Рекурсии при составлении программ | Дуня | Помощь студентам | 3 | 06.12.2006 20:35 |