Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2014, 20:54
Новичок на форуме
Отправить личное сообщение для vadi Посмотреть профиль Найти все сообщения от vadi
 
Регистрация: 07.07.2014
Сообщений: 1

Цикл или рекурсия
Из текста учебника я понял, что код с использованием цикла эффективнее по сравнению с рекурсией. Но...

Я нашел в интернете функцию, которая из введенного в текстовое поле списка строк удаляет дубликаты. Мне нужна более специфическая задача, но очень похожая, и я решил взять за основу интернетный прототип. Он был реализован в виде рекурсии. Я сделал с циклом и он работает в разы быстрее, но меня терзают смутные сомнения. Ведь почему-то изначально программист (видимо более опытный чем я) сделал с рекурсией...
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2014, 21:09
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Не парься. Любой рекурсивный алгоритм выразим итеративно. В языках без оптимизации хвостовой рекурсии (ЕМНИП, js к таковым относиться), рекурсия -- это жопа. Она память жрет, производительность падает. Не нужно рекурсивно ничего пейсать. Некоторые хомячки пишут рекурсивно, просто ради позерства, чтобы показать всему миру своим друзьям "в контакте", что они пишут в фапе-стайле.
Нутыпонел.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2014, 21:22
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
ЕМНИП, js к таковым относиться
Все современные VM JS уже неплохо оптимизируют рекурсии (разумеется лишь частные случаи). Древней книжки Крокфорда начитался? Прежде чем включать умника нужно подумать (а лучше вообще не включать).

Цитата:
рекурсивно, просто ради позерства
Рекурсия - простое, очевидно и элегантное решение. Разумеется всё нужно юзать с умом.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.07.2014 в 23:32.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2014, 21:27
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от kobezzza
Все современные VM уже оптимизируют неплохо хвостовые рекурсии
Даже если так, надо еще писать в хвосто-рекурсивном стиле, а это гребаный адЪ. И даже с оптимизацией она сольет итерации.

Сообщение от kobezzza
Рекурсия простое, очевидно и элегантное решение.
Это очередной базворд. Приведи пример где это справедливо. Я чет не видел такого, если не считать задроченного до дыр факториала, да и то вопрос.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2014, 21:29
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от foo Посмотреть сообщение
Это очередной базворд. Приведи пример где это справедливо. Я чет не видел такого, если не считать задроченного до дыр факториала, да и то вопрос.
Любой поиск в глубину, например удаление непустой папки. Только полный кретин будет "оптимизировать" это место переписывая 3 строчки рекурсия на 30 с циклом и искусственным стеком.
__________________
kobezzza
code monkey
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2014, 21:32
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от kobezzza
(разумеется
И кстати, почему разумеется?
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2014, 21:33
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Даже если так, надо еще писать в хвосто-рекурсивном стиле, а это гребаный адЪ.
Писать надо так, чтобы работать с этим нормально было, а оптимизации оставь для компиляторов и специальных библиотек.
__________________
kobezzza
code monkey
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2014, 21:33
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от kobezzza
3 строчки рекурсия на 30
Покажи пример. Нет такого даже близко.
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2014, 21:38
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от foo Посмотреть сообщение
Покажи пример. Нет такого даже близко.
Напиши паттерн "примесь" на рекурсии и без. Я писал оба варианта. Вариант на циклах больше раза в 2 и супер не очевидный.

Без рекурсии: https://github.com/kobezzza/Collecti...e/obj.jsn#L118

изучай.

***

Сколько лет ты пишешь код? 0.1? оно и видно, но зато в каждом треде всех учишь и рассказываешь сказки.
__________________
kobezzza
code monkey
Ответить с цитированием
  #10 (permalink)  
Старый 07.07.2014, 21:38
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от kobezzza
Писать надо так, чтобы работать с этим нормально было, а оптимизации оставь для компиляторов и специальных библиотек.
kobezzza,
Ты уверен, что ты понимаешь о чем говоришь?
Код:
fact=function(n){if(n<2) return 1; return n*(fact(n-1))}
Это не хвосто-рекурсивный код. его соптимизировать невозможно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript чат-бот FanAizu Общие вопросы Javascript 5 30.01.2014 03:00
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
подключать jquery-ui.custom.js или jquery-ui.custom.min.js? Faab jQuery 4 11.10.2013 20:53
Кастомный селект, чекбокс, радио vostok Ваши сайты и скрипты 0 12.08.2013 00:33
В зависимости от referrer выводить рекламу adsene или зорьки wlad2 Общие вопросы Javascript 12 19.12.2010 01:02