Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Рекруссия - да никогда в жизни! (https://javascript.ru/forum/misc/48042-rekrussiya-da-nikogda-v-zhizni.html)

der-coder 17.06.2014 17:02

Рекруссия - да никогда в жизни!
 
бывают ли такие программисты которые практически никогда ее не используют?

вопрос возник от того что в некоторых учебниках пишут что это нехорошее свойство языка

что если бы этого свойства не было в JS?

Makarov 17.06.2014 17:14

Любую рекурсию можно заменить циклом и стеком. Потому что рекурсия и есть по сути цикл со стеком. Другой вопрос - зачем? Рекурсия - мощное выразительное свойство языка и если представлять ее возможности и ограничения, чего бы ей не пользоваться.

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

der-coder 17.06.2014 18:52

вопрос об отмене / неиспользовании рекурсии например возникает при обучении детей программированию - лишняя сложность не желательна

Erolast 17.06.2014 20:17

:blink: Рекурсия - вещь элементарнейшая же.

der-coder 17.06.2014 20:28

Цитата:

Сообщение от Erolast (Сообщение 316978)
:blink: Рекурсия - вещь элементарнейшая же.

поверь мне - она есть либо ее нет

"бритва обамы" - каждый программист должен это понимать

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

Erolast 17.06.2014 20:34

Цитата:

я ж тебе гоаворю - я в учебнике по языкам программирования читал что не рекомендуется включать эту возможность в язык дабы избежать возможных проблем...
Мало ли что там пишут. Вообще учебники частенько пишут те, кто сами нихрена ничего не программируют и не умеют. То же с учителями информатики.

Цитата:

- соответственно если она легко эмулируется циклами то накой фиг она тогда
Простота, понятность и гибкость кода.

Makarov 17.06.2014 20:55

Цитата:

Сообщение от der-coder (Сообщение 316981)
я ж тебе гоаворю - я в учебнике по языкам программирования читал что не рекомендуется включать эту возможность в язык дабы избежать возможных проблем...

В таких случаях стоит приводить название и автора учебника, чтобы мы их тут дружно обругали

Цитата:

Сообщение от der-coder (Сообщение 316981)
- соответственно если она легко эмулируется циклами то накой фиг она тогда

Стоп! Кто говорил что она легко эмулируется циклами? Она в принципе эмулируется. Как раз в большинстве случаев реализация циклом сложнее с точки зрения человека. Читать рекурсивные вызовы проще чем циклы в которых приходится думать "а чего это там в стеке лежит на пятнадцатой итерации?"

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

Sweet 17.06.2014 21:39

der-coder, для начала расскажи о себе:) Сколько у тебя лет стажа, на каких языках разрабатывал проекты. Или ты студент, прочитал полкнижки и тебе внезапно открылась сущность бытия?


Часовой пояс GMT +3, время: 00:48.