IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Рекурсия? Что же это такое?, Помогите
Cheburashka
сообщение 14.05.2009 14:07
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Ну так вот на многих сайтах с задачами (не только acmp.ru) я находил такое определение, как рекурсия. Не могли бы Вы рассказать всё (ну что Вы знаете), что нужно юному программисту, для знания данной темы.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 15.05.2009 10:27
Сообщение #2


Гость






Ну, еще не мешало бы сказать про особый тип рекурсии: хвостовую (правую) рекурсию, когда собственно рекурсивный вызов производится после всех остальных необходимых вычислений (у Lapp-а в посте №8 приведена именно такая реализация вычисления факториала). То есть, вот это:
function Factorial(n: integer): LongInt;
begin
if n=0 then Factorial:=1 else Factorial:=Factorial(n-1)*n
end;
уже не хвостовая рекурсия, потому что рекурсивный вызов - не последний, после него есть еще вычисления... А разница - в том, что хвостовую рекурсию многие оптимизирующие компиляторы сводят к итерации, а значит, выполняться она будет быстрее и без доп. затрат памяти. Насчет Паскаль-компиляторов не знаю, чтоб кто-нибудь умел такое, но вот С++ компиляторы (в частности VC7+ от Microsoft, GCC из "GNU"-тых и ICC от Intel) прекрасно с данной задачей справляются.

Кстати, создатели FPC утверждают, что версия 2.2 тоже уже умеет оптимизировать хвостовую рекурсию, но надо будет проверить...

P.S. Я сам везде, где можно стараюсь использовать именно этот способ. Возможно, и не поможет, но не помешает - точно. А если когда-нибудь используемый компилятор научится оптимизировать такое - то не надо будет переписывать код smile.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Сергей Меркурьев   Рекурсия? Что же это такое?   14.05.2009 14:07
Ozzя   Берется любой хороший учебник по Паскалю и читаетс...   14.05.2009 14:14
Сергей Меркурьев   А в учебнике "В.Б. Попова Turbo Pascal для шк...   14.05.2009 14:16
volvo   В принципе, берется любой учебник по любому языку,...   14.05.2009 14:19
Ozzя   В Фаронове есть. http://pascal-books.narod.ru/boo...   14.05.2009 14:19
Сергей Меркурьев   Ну я так понял что в основном рекурсия выполняетя ...   14.05.2009 14:26
Lapp   рекурсия выполняетя с помощью подпрограмм (процеду...   14.05.2009 16:02
Ozzя   Ну да. Найдите какие-нибудь классичсекие примеры. ...   14.05.2009 14:30
volvo   Олег даже тему открывал в свое время для интересны...   14.05.2009 16:07
Lapp   Но что-то ее забросили. Андрей, если наткнешься на...   14.05.2009 16:45
Сергей Меркурьев   В общем то про факториал я знаю, и, что значение 3...   14.05.2009 19:35
Lapp   А вот не могли бы Вы сказать мне каким образом мож...   14.05.2009 20:00
Сергей Меркурьев   В принципе если Вас не затруднит рассказать мне пр...   14.05.2009 20:01
Lapp   В принципе если Вас не затруднит рассказать мне пр...   14.05.2009 20:09
Сергей Меркурьев   В принципе про рекурсия да!   14.05.2009 20:11
volvo   Ну, еще не мешало бы сказать про особый тип рекурс...   15.05.2009 10:27


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.07.2025 5:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"