|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.11.2009, 11:42 | #1 |
Пользователь
Регистрация: 06.11.2009
Сообщений: 12
|
Рекурсивный алгоритм
Здравствуйте!
Помогите пожалуйста советом: каким способом можно написать рекурсивный алгоритм с как-можно большим числом вызовов? Я пробовал 3 метода: Первый: Код:
Код:
Код:
Последний раз редактировалось Stilet; 12.11.2009 в 12:26. |
12.11.2009, 12:26 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Во-первых: Какой ошибкой?
Во-вторых: //Какие-то действия - это какие?
I'm learning to live...
|
12.11.2009, 13:05 | #3 |
Пользователь
Регистрация: 06.11.2009
Сообщений: 12
|
Действия произвольные, не связанные с выделением памяти.
В моем случае: функция осуществляет заливку определенным цветом области графического файла (заливка как в пейнте). Проверял неоднократно, выход за границы графики не происходит. Ошибка такого плана: "необработанное исключение" и дебугер указывает на место вызова следующего екземпляра функции. То есть на: Recur(/*Параметры*/);, CRecur r(/*Параметры*/);, CRecur* pRecur = new CRecur(/*Параметры*/);. |
12.11.2009, 13:07 | #4 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Просто стек переполняется. Думаю, неважно каким способом делать. Если такая ошибка возникает в работе - надо переделывать алгоритм, чтобы без рекурси было.
|
12.11.2009, 13:17 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
12.11.2009, 21:54 | #6 |
Пользователь
Регистрация: 06.11.2009
Сообщений: 12
|
Ошибка вот такая:
Необработанное исключение в "0x7c812aeb" в "DDRace1.exe": Исключение Microsoft C++: std::bad_alloc по адресу 0x00033720.. Код вот такой: Код:
Последний раз редактировалось Sazary; 13.11.2009 в 01:31. |
12.11.2009, 22:54 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
std::bad_alloc вылетает когда память не удаётся выделить, а это обычно когда она кончается. Эта рекурсия всю оперативку хавает походу. Оно в принципе и не странно. В конструкторе объекта создавать кучу таких же объектов... Была бы это хотя бы обычная функция, а не конструктор... Кошмар, в общем
|
13.11.2009, 09:24 | #8 |
Пользователь
Регистрация: 06.11.2009
Сообщений: 12
|
К pu4koff-у.
Всю оперативку не хавает, это точно. А вот стек переполнятся конечно может. Ко всем остальным: в этой функции рекурсия стремиться к нерекурсии!!! У меня просьба: есть ли ссылка на литературу, в которой описывается где С++ распределяет новосозданный объект в различных ситуациях? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсивный поиск папок FindFirst | Lehanidze | Помощь студентам | 4 | 06.08.2009 13:13 |
Java ME Рекурсивный метод поиска в подпапках | Клык | Помощь студентам | 0 | 31.07.2009 16:06 |
Сортировка, поиск, рекурсивный алгоритм Delphi | Stases | Помощь студентам | 4 | 29.05.2009 01:15 |
Разработать рекурсивный алгоритм | lucky | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 08.05.2009 15:04 |
Рекурсивный SQL запрос | ADSoft | SQL, базы данных | 5 | 02.06.2008 16:55 |