![]() |
|
Модераторы: Alx, Fixin |
![]()
|
|
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
А для чего нужна рекурсия , я не понимаю? Ведь с ней функции вычисляются гараздо дольше..
-------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Реурсия более понятна человеку. Код короткий. Легко читается. Не надо лишних контейнеров.
Но на практике она сакс конечно. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
А бывают случаи, когда без нее никак. Вот например поиск файлов у тебя на винчестере это чисто рекурсионная процедура. Цикл сделать для этой задачи невозможно, так как твоя файловая система это древовидная структура, глубина которой (то есть кол-во папок в папке в подпапке такой-то папки
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
cardinal
|
|||
|
||||
| TwisT_X |
|
||||||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
Ну вот смотри пример рекурсии на факториалах( На языке паскаль):
а вот с рекурсией:
Так второй вариант намного сложнее и дольше выполняем при работе с данной функцией!! -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
||||||
|
|||||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Для факториала да, а вот по дереву походи или по графу.
От Сложных алгоритмы часто с помощью рекурсии остаётся пара строк. |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
У меня в книжке дано определение рекурсии:
Рекурсивная функция - это функция, которая вызывает сама себя либо непосредственно, либо косвенно с помощью другой функции. В некоторых задачах применение подобных функций обеспечивает компактное и красивое решение. Но для этого сама постановка задачи должна допускать рекурсию. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Рекурсия проще в понимании, для итерации как уже говорилось ранее может понадобится стек, очередь и т.д. При вызове функции требуется время (занести адрес в стек, прыгнуть на тело функции), также все локальные переменные потребуют память при каждом вложении.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Doc_d0s |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
sergej.z
да а ты уверен? препишем это так: ret=ret*i, а? Perchilla
А как? --------------------
Админ- это вождь Apache'й :) |
||||
|
|||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
Doc_d0s
Вот как .. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| Бегемот |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
Doc_d0s
ret=ret*i и ret*=i это одно и тоже выражение, просто написание разное. И почему ты вообще решил, что вот это рекурсия?
Рекурсия - это процесс, при котором функция вызывает сама себя. А тут самый обыкновенный цикл. |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Слушай, почитай пожалуйста доку по рекурсии, а то так до следующего года спорить будешь |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
Perchilla
А как? --------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Тебе привели решение на двух языках уже. |
|||
|
||||
| sergejzr |
|
||||||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Doc_d0s
А
PS: Вызов функции имеет место в коде, если там присутствуют круглые скобки "(" и ")" При рекурсии должен происходить ещё и вызов самой функции собой. Например:
Хватит разводить флейм! |
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |