|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.09.2008, 21:49 | #1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
выход из рекурсии
народ! помогите выйти из рекурсии. я придумал такой вариант(реальный код уже потерян):
Код:
Упс...
|
24.09.2008, 22:14 | #2 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Код:
|
|
28.09.2008, 22:32 | #3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
это опять же нерационально. да, при входе в процедуру программа будет сразу выходить, но сколько таких входов еще будет? в дальнейший цикл программа уже не пойдет, но все предыдущие входы будут использованы. для экономии времени уж лучше как я предлагаю...
Упс...
|
28.09.2008, 22:38 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
А о стеке вы не подумали?
|
29.09.2008, 09:09 | #5 | |
Форумчанин
Регистрация: 28.09.2008
Сообщений: 344
|
Цитата:
у тебя а передается не по ссылке и q(a); ничего не делает попробуй для начала Код:
|
|
29.09.2008, 09:29 | #6 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
L_M, ваш первый вариант никогда не завершится, так как "a" не увеличивается. Поставте "var", и всё случится. И еще, зачем стока if-ов и какой-то "f".
Код:
|
02.10.2008, 22:11 | #7 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
Да нет, этот код я написал просто для примера, он конечно не верен. if нужен как раз для выхода, т.е. перед каждым оператором проверяется, нужно ли его выполнять или пора завершить рекурсию. например в таком коде
Код:
P.S. еще один вариант можно применять для некоторых задач - завершать программу при достижении условия - только не знаю как это сделать в консоли. и еще: стек конечно слово красивое, но ничего не объясняет. или выы предлагаете чтобы при достижении условия программа сама вытаскивала из стека и тем самым прекращалась(хороший вариант, но не знаю возможен ли)? или имеется в виду, что прекращать ее не надо - стек переполниться и она сама завершиться?
Упс...
Последний раз редактировалось L_M; 02.10.2008 в 22:19. |
03.10.2008, 07:39 | #8 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
А как вам такой вариант
Код:
Но вы сами говорили: Цитата:
|
|
03.10.2008, 17:46 | #9 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
не выход из рекурсии а условие продолжения рекурсии
function f(par): integer; begin if par<100 then result:= par + f(par+1); end;
программа — запись алгоритма на языке понятном транслятору
|
03.10.2008, 18:03 | #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 |