Часто ли вы пользуетесь рекурсией?

Модератор: Модераторы разделов

Часто ли вы пользуетесь рекурсией?

Стараюсь использовать чаще.
7
37%
Стараюсь неиспользовать.
12
63%
 
Всего голосов: 19

Аватара пользователя
FreeNUX
Сообщения: 185
Статус: с сириуса
ОС: FreeBSD 6.2

Часто ли вы пользуетесь рекурсией?

Сообщение FreeNUX »

Вот решил спросить:"Часто ли вы используете рекурсию в программировании?".
Аркона – лишь тихие воды,
Кровью варяжской янтарь в них застыл.
Аркона – там ветер со взморья
В трещинах скал своё сердце забыл.
Темнозорь - Аркона (Вольницей В Просинь Ночей - 2005)
Спасибо сказали:

Аватара пользователя
MaXim
Сообщения: 33

Re: Часто ли вы пользуетесь рекурсией?

Сообщение MaXim »

Всё должно быть разумно и к месту. Поэтому не то, ни другое. ИМХО опрос с двумя крайностями в вариантах ответов не очень корректен.
Спасибо сказали:

Аватара пользователя
charlie
Сообщения: 104

Re: Часто ли вы пользуетесь рекурсией?

Сообщение charlie »

Я стараюсь использовать рекурсию как можно реже. Вообще, имхо, большинство программистов стараются вообще не использовать рекурсию, хотя, как правильно сказал MaXim, все зависит от задачи.
Из университета Беркли вышли два главных продукта: LSD и BSD.
Ну было просто рулез!...
Спасибо сказали:

Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: Часто ли вы пользуетесь рекурсией?

Сообщение Sparky »

Вообще рекурсия работает быстрее интераций в одной и той же задаче, значит я за рекурсию B) Вообще все конечно от задачи зависит, некоторые вещи без рекурсии просто не сделать ;)
Блог
--------------------

GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
Спасибо сказали:

Аватара пользователя
Alejandro
Сообщения: 98
Статус: Наследник "Астарота"

Re: Часто ли вы пользуетесь рекурсией?

Сообщение Alejandro »

(Sparky @ Среда, 16 Июня 2004, 11:01) писал(а):Вообще рекурсия работает быстрее интераций в одной и той же задаче, значит я за рекурсию B) Вообще все конечно от задачи зависит, некоторые вещи без рекурсии просто не сделать ;)

Насчет быстрей - тут поспорить можно. Ежели у тебя с оперативкой не все в порядке, то рекурсия очеень даже не быстрей работает. ;)
А так, действительно все зависит от задачи. Есть такие, которые можно решить только рекурсией.
Follow the white Rabbit!
Спасибо сказали:

Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: Часто ли вы пользуетесь рекурсией?

Сообщение Sparky »

Ежели у тебя с оперативкой не все в порядке

У меня все в порядке :lol:
Блог
--------------------

GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
Спасибо сказали:

Аватара пользователя
MaXim
Сообщения: 33

Re: Часто ли вы пользуетесь рекурсией?

Сообщение MaXim »

Как справедливо заметили, есть задачи где без рекурсии не обойтись. Факториалы или поиск с возвратом. Так что Хоть рекурсия это и не очень хорошо, но иногда она просто идеальна.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Часто ли вы пользуетесь рекурсией?

Сообщение t.t »

На самом деле, всё зависит не только от задачи, но в бОльшей степени от языка. В большинстве распространённых языков рекурсия очень ресурсоёмка. Но есть такие языки, где это вообще основной инструмент программирования, и реализована она там намного красивее.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: Часто ли вы пользуетесь рекурсией?

Сообщение ezheg »

а вот в институте сказали сделать это рекурсией и баста! вобщем если рекурсия очень простенькая типа факториалов то без проблем, а так помню пару задач сделал и сам не понимал как они работают,баги на ощупь искал.
а потом в 3-й раз сказал НУ НЕ БУДУ Я ЭТО ДЕЛАТЬ РЕКУРСИЕЙ. Преподы смирились,даже 5 в зачетку поставили. :D
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

Re: Часто ли вы пользуетесь рекурсией?

Сообщение sdk »

Неправда, господа!
Любой рекурсивный алгоритм может быть сведен к итерационному.
Доказательство на память не приведу, но могу поискать, если надо.

Другое дело, что рекурсия бывает крайне удобна и позволяет очень наглядно и красиво отразить решение задачи.

Кстати, мне очень нравится эпиграф к одному из разделов Страуструпа:
Итерация от человека, рекурсия -- от бога :lol:

А голосование и правда некорректно -- я использую рекурсию в зависимости от задачи. Никаких "стараюсь" :). Нужна -- использую, не нужна -- не использую ;).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Часто ли вы пользуетесь рекурсией?

Сообщение t.t »

(sdk @ Среда, 16 Июня 2004, 19:41) писал(а):Неправда, господа!
Любой рекурсивный алгоритм может быть сведен к итерационному.

Точно так же, как и любой итерационный -- к рекурсивному.

(sdk @ Среда, 16 Июня 2004, 19:41) писал(а):Кстати, мне очень нравится эпиграф к одному из разделов Страуструпа:
Итерация от человека, рекурсия -- от бога :lol:

Да, хорошо сказано.

(sdk @ Среда, 16 Июня 2004, 19:41) писал(а):А голосование и правда некорректно -- я использую рекурсию в зависимости от задачи. Никаких "стараюсь" :). Нужна -- использую, не нужна -- не использую ;).

И всё-же в первую очередь в зависимости от языка. В функциональном программировании в большинстве задач лучше с рекурсией; в процедурном -- наоборот.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

Re: Часто ли вы пользуетесь рекурсией?

Сообщение sdk »

И всё-же в первую очередь в зависимости от языка. В функциональном программировании в большинстве задач лучше с рекурсией; в процедурном -- наоборот.


Я пишу в основном на C++, про него и говорю всегда по умолчанию :). Привычка уже сложилась :).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Часто ли вы пользуетесь рекурсией?

Сообщение t.t »

(sdk @ Среда, 16 Июня 2004, 20:17) писал(а):

И всё-же в первую очередь в зависимости от языка. В функциональном программировании в большинстве задач лучше с рекурсией; в процедурном -- наоборот.

Я пишу в основном на C++, про него и говорю всегда по умолчанию :). Привычка уже сложилась :).

Логично. Я просто сейчас как раз с Си на Схему перелезаю :)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

Re: Часто ли вы пользуетесь рекурсией?

Сообщение sdk »

Логично. Я просто сейчас как раз с Си на Схему перелезаю

О Схеме я слышал только, что она существует :).
И, честно говоря, мне этого хватает ;).
Знаю хорошо только те языки, которые мне нужны для работы:
C++, bash, perl, vimScript, Java

С остальными поверхностно знаком (напр. Python, javascript, итд).
Про basic и паскаль молчу. Их я знаю с пеленок, хотя уже основательно подзабыл :).

Блин, чего это меня понесло все перечислять? Ну да ладно, не стирать же теперь :).

ЗЫ. Кстати, а что значит "перелезаю"? Смена "любимчика"? ;) Или обстоятельства (читай -- работа)? Или интерес? Может "изучаю"? :)
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
Alagert
Сообщения: 167

Re: Часто ли вы пользуетесь рекурсией?

Сообщение Alagert »

Любой рекурсивный алгоритм может быть сведен к итерационному.

И это правильно!
Приведу простой пример: наверняка все знакомы с задачей коммивояжора! Так вот основной способ ее решения сводиться просто к перестановкам из возможных комбинаций городов. И во всей найденной мной литературе это сделано с помощью рекурсии. Но так гадко! Заставить это работать у меня не получилось. Но переписанный в итерации алгоритм работает на ура!!!
И я вообще стараюсь использовать рекурсии как можно реже! Особенно в задачях связанных со всевозможным поиском!
Еще один яркий пример задача о ферзях! Прочитай те ее решение у Вирта. заставьте это работать! :D
Born to be ROOT
Спасибо сказали:

Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: Часто ли вы пользуетесь рекурсией?

Сообщение Sparky »

Неправда, господа!
Любой рекурсивный алгоритм может быть сведен к итерационному.
Доказательство на память не приведу, но могу поискать, если надо.

Да если не составит труда найли пожалуйста - интересно B)
Блог
--------------------

GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Часто ли вы пользуетесь рекурсией?

Сообщение t.t »

(sdk @ Четверг, 17 Июня 2004, 0:08) писал(а):

Логично. Я просто сейчас как раз с Си на Схему перелезаю

О Схеме я слышал только, что она существует :).
И, честно говоря, мне этого хватает ;).
[поскипано]
ЗЫ. Кстати, а что значит "перелезаю"? Смена "любимчика"? ;) Или обстоятельства (читай -- работа)? Или интерес? Может "изучаю"? :)

Не, не обстоятельства. "Любимчика", и интерес, пока изучаю. Просто интересно попробовать делать некоторые вещи, которые только на функциональном программировании делаются "на ура". На самом деле, пока я изучаю Common Lisp и думаю, что дальше, CLOS (CL с объектами) или Scheme.

Добавил @ 17.06.2004 12:17

(Alagert @ Четверг, 17 Июня 2004, 0:35) писал(а):
Любой рекурсивный алгоритм может быть сведен к итерационному.

И это правильно!

Опять же: правильно это только для процедурного программирования. Если сильно хотите, я, как время будет, набросаю исходники некоторых задачек, решённых на функциональном языке рекурсивно и на процедурном итеративно; уверяю: первый вариант исходников будет раза в 3-4 меньше.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

Re: Часто ли вы пользуетесь рекурсией?

Сообщение sdk »

Да если не составит труда найли пожалуйста - интересно

Честно, целый час лазил по инету (самому интересно стало).
Везде пишут, что преобразование и туда и сюда возможно (это факт), но нигде, блин, доказательства не приводят :(.
Для конкретных алгоритмов пошагово расписывают методы преобразования, приводят примеры этих алгоритмов в рекурсивном исполнении, потом в итеративном, а общего доказательства нигде нету.

Или я так ищу :).

ЗЫ. А по тетраткам лазить лениво, так как их много с универа осталось :). У меня на такой поиск может уйти день :).
ЗЗЫ. Для факториалов могу прямо неотходя от кассы выдумать (на С):
Рекурсия:

Код: Выделить всё

int factorialRecursive(int n)
{
     if(n != 1)
         return n*factorialRecursive(n-1);
     else
         return 1;
}

int factorialIterative(int n)
{
     int res = n;
     for(int i=n-1;i>1;i--)
         res *= i;
     return res;
}
main()
{
      printf("%d", factorialRecursive(10));
      printf("%d", factorialIterative(10));
}
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
Имя пользователя
Сообщения: 25

Re: Часто ли вы пользуетесь рекурсией?

Сообщение Имя пользователя »

Народ, да зря вы спорите!
Настоящая рекурсия, это wget -r -l 0 .
:D :D :D
Спасибо сказали: