Программирование


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
62 3 32

Рекурсия хуюрсия Аноним 06/12/18 Чтв 23:00:41 13071901
1544126438472.jpg (9Кб, 192x262)
192x262
1544126438474.png (8Кб, 230x190)
230x190
Два блядь ну объясни какая разница между рекурсией и циклом, и нахуя её вообще использовать.

с меня минэтик, ня!

АБУ БЛЯДБ СУКА РОТ ЕБАЛ ТВОЙ Т ТВОЕЙ КАПЧИ
06/12/18 Чтв 23:06:55 13071922
>>1307190 (OP)
Попытайся написать бинарное дерево через циклы и поймёшь.
Аноним 06/12/18 Чтв 23:16:13 13071973
>>1307192
Какие нахуй дерева я блядь дальше хеллоу ворлд не дошел брат
Аноним 06/12/18 Чтв 23:18:51 13072014
>>1307197
Это не твоё. Код за тебя писать тоже другие будут? Если тебе лень посмотреть кучу роликов на ютубчике по этой теме, то о чём можно говорить?
Аноним 06/12/18 Чтв 23:24:54 13072045
Аноним 06/12/18 Чтв 23:52:04 13072176
>>1307197
>дальше хеллоу ворлд не дошел
Тогда почему ты до сих пор не в Ньюфаг-треде? Ммм?
Аноним 07/12/18 Птн 00:14:06 13072297
Цикл - это и есть рекурсия. Процесс рекурсии разделяется на итеративную и на рекурсивную - обе являются разными реализация одного и того же, в современных языках можно различить тип процесса по синтаксису. For и while это итеративные рекурсивные процессы, или tail-recursion. Многие считают, что рекурсия это обязательно, когда в функции присутствует синтаксический вызов функции самой себя. На самом деле, рекурсия - это вызов процессом самого себя, что и происходит в циклах. Синтаксически мы можем не видеть этот вызов, или он может быть реализован с помощью jump'ов.
Рекурсия - это вызов процессом самого себя, альфа и омега программирования.
cs-студент 2 lvl, написал, что знал, могу ошибаться

Аноним 07/12/18 Птн 00:36:23 13072408
>>1307229
Рекурсия - это то, что понравилось мне больше всего при изучении программирования на текущий момент. Это как магия.
Аноним 07/12/18 Птн 01:28:48 13072569
>>1307201
Да я понял уже.
Просто поступил на программиста в универ, вот щас пытаюсь хоть 1 курс пережить, а там перевестись хуй знает куда, ибо безхребетное чмо с нулем интересов

Спасибо всём кто отписал, надеюсь тред утонет как можно скорее, чтобы не сходить никому глаза.
Аноним 07/12/18 Птн 01:34:38 130725810
proxy.duckduckg[...].jpg (94Кб, 500x492)
500x492
>>1307240
>рекурсия понравилось мне больше всего
>магия
Псс, молодой человек, не хотите в школу волшебников?
Аноним 07/12/18 Птн 01:37:17 130725911
>>1307258
>Псс, молодой человек, не хотите в школу волшебников?
>42 года
>молодой человек
Аноним 07/12/18 Птн 01:40:12 130726012
>>1307259
Ну тогда вам уже поздно в школу волшебников. Добро пожаловать на кладбон, старичек.
Аноним 07/12/18 Птн 01:42:59 130726113
>>1307260
>Ну тогда вам уже поздно в школу волшебников. Добро пожаловать на кладбон, старичек.
Я уже здесь, человек!
Аноним 07/12/18 Птн 09:54:32 130738314
>>1307190 (OP)
а как тебе такое пидорас

consoleLog :: Show a => a -> Int -> IO ()
consoleLog msg n | n > 0 = print msg >> consoleLog msg (n-1)
| otherwise = return ()
main = consoleLog "Hello World" 99

страшно сука??? дрожи
Аноним 07/12/18 Птн 10:04:06 130739415
Аноним 07/12/18 Птн 10:09:43 130740016
>>1307256
Мб стоит окончить, раз поступил?
Рекурсивно зачастую удобно искать какие-нибудь скобки. Вот пишешь ты калькулятор. У тебя выражение (d×3/(5-e×(t-(2+e)*2)))
Представь как искать скобки в цикле, и как мило они смотрелись бы в рекурсии. Тоже первый курс, но нам про рекурсию даже не рассказали, сразу требовали в лабах еее
Аноним 07/12/18 Птн 10:14:56 130740517
>>1307192
Нормально пишется.
Аноним 07/12/18 Птн 10:16:01 130740618
>>1307394
ищу работу gbpltw@cock.li от 500р.\месяц
Аноним 07/12/18 Птн 11:25:36 130743619
>>1307190 (OP)
Пока используешь хвостовую рекурсию, то никакой.
Аноним 07/12/18 Птн 20:31:41 130770520
Аноним 09/12/18 Вск 11:06:59 130842821
>>1307190 (OP)
Учил только на уроках информатики в школе.
Нам препод лет 10 назад говорил, что рекурсия - саму себя продолжает или прерывает, а цикл могут запускать/останавливать внешние элементы. И цикл - понятие более широкое, включающее в себя набор операций, которые можно повторять (но не обязательно, в отличие от рекурсии).

Аноним 09/12/18 Вск 14:28:30 130850722
Аноним 10/12/18 Пнд 07:49:06 130889423
>>1307190 (OP)
Чтобы понять рекурсию нужно сначала понять рекурсию
Аноним 10/12/18 Пнд 10:01:16 130893424
>>1307190 (OP)
рекурсия по сути используется с циклом неразрывно
ты пишешь бота для игрули который что то там крафтит, кококо заходишь в крафт - тебе нужно проверить открыт ли инвентарь и только потом продолжать, пишешь
def сделать_хуйню {
if (inventory_open() =1)
do идешь_дальше
else
открыть инвентарь
сделать_хуйню()
}
вызываешь функцию внутри ее самой
ты в душе не ебешь когда и при каких условиях с какой попытки ты откроешь его, можен окно зависло, можетпинг 30к, ты просто ебашишь рекурсию пока не выполнится условие, а не по счетчику или while(inv_open = 1) if if if
попробуй ту же конструкцию переписать логически на ifelse +goto и ты увидишь какой пиздец у тебя в коде будет, через 3 минуты ты сам не разберешься что и как делается
рекурсию очень удобно воспринимать человеку
вообще желательно писать без неё до тех пор пока ты не прозреешь что можно сэкономить себе время и упростить код -хуячь сверху вниз код и все упрощения сами собой придут по ходу дела
Аноним 27/12/18 Чтв 23:38:07 131753525
>>1307190 (OP)
Зачем? Рекурсия - это говнокод. Её использование усложняет читаемость и отладку кода. Следует максимально избегать её использование.
Аноним 27/12/18 Чтв 23:47:39 131754426
>>1317535
Ну я бы не стал так грубо о рекурсий выражаться, но да. На самом деле очень мало задач где необходима эта рекурсия если есть выбор между циклом и рекурсией выбирай цикл.

Цикл отлично оптимизирован, он быстрый и не занимает много памяти т.к там он хранит 1 переменную, а после её очищает и заменяет, если память не изменяет то 2 байта.

Рекурсия - код который многократно вызывает сам себя, но каждый вызов как правило имеет разные аргументы которые рассчитываться по некому шаблону и так до тех пор пока условие не сработает, которое остановит рекурсию. Сама по себе рекурсия сложно читаемая, долга, занимает много памяти ибо ты во время её вызова словно создаёшь клоны вызываемой функций.
Аноним 28/12/18 Птн 06:35:24 131762827
>>1317544
Там где есть выбор между циклом и рекурсией ты напишешь хвостовую рекурсию, которую ещё в 60-х научились автоматически оптимизировать в цикл.

Сама по себе рекурсия намного проще читается, особенно в тех случаях где эта самая рекурсия нелинейная.
Аноним 28/12/18 Птн 09:18:10 131765728
>>1317628
Хвостовая рекурсия - это то, что мы называем циклом?
Аноним 28/12/18 Птн 10:15:39 131766829
А нахуя знать-то? Не обязательно говно копошить. Я вообще не помню когда последний раз рекурсию использовал. Цикл делает всё и даже лучше, и интуитивнее итерации ближе
Аноним 28/12/18 Птн 10:31:16 131767630
>>1307256
Удвою этого: >>1307400
Поступить "хоть куда" — такое. Если ты не блатной дохуя, то потом можешь понять, что айти было нормальным шансом.
Аноним 28/12/18 Птн 14:58:06 131779531
>>1307190 (OP)
1) Рекурсия в нынешних реалиях обычно используется только при обходе некого дерева
2) Рекурсия в отличии от цикла, позволяет хранить на стеке локальные переменные, которые могут понадобится при обходе дерева. Опять же это зависит от алгоритма и от того, что именно ты пытаешься сделать.
Аноним 28/12/18 Птн 17:01:06 131785432
>>1317795
когда я заюзал рекурсию для обхода древовидной структуры документов, тимлид мне сказал, что это херовый вариант и его используют только студенты.
Аноним 28/12/18 Птн 17:07:18 131786133
>>1317854
Херовый тимлид у тебя.
Аноним 28/12/18 Птн 17:24:24 131787534
>>1317854
Зависит от ситуации.

Если тебе нужно изменять текущую ноду в зависимости от результата обхода нижестоящих - то рекурсия есть выход.

Если тебе нужно посетить абсолютно все элементы дерева - рекурсия есть выход.

Если тебе нужно найти элемент в бинарном дереве (например BSP) - это можно сделать и циклом
Аноним 28/12/18 Птн 17:46:37 131788635
>>1317854
Тимлид не умеет в рекурсию.
Аноним 28/12/18 Птн 21:40:09 131801936
>>1307229
Ты путаешь некоторые понятия. Есть рекурсия (процесс вычисления) и есть рекурсивная функция. Цикл это не рекурсивная функция и не рекурсия, а итерация (процесс). В нем нет вызова самого себя.

Также циклы это не хвостовая рекурсия (tail recursion). Хвостовая рекурсия транслируется в цикл, но не наоборот.

Рекурсивный процесс, и рекурсивная функция, всегда содержат вызов себя. Их нельзя реализовать без рекурсивного вызова. Цикл не может быть рекурсией никак, в нем нет вызова себя самого.
Аноним 28/12/18 Птн 21:41:54 131802037
>>1307259
>>42 года
Разве в 42 уже нужно ко смерти готовится?! Где логика?!
Аноним 28/12/18 Птн 21:52:30 131802638
>>1307256
Сдашься сейчас, будешь сдаваться всегда, все будет не твое.
Аноним 28/12/18 Птн 21:58:38 131802839
>>1307436
>Пока используешь хвостовую рекурсию, то никакой.
Если в языке нет оптимизации хвостовой рекурсии, то в стеке все равно накапливаются вызовы функции.
Аноним 28/12/18 Птн 22:05:57 131803140
>>1317535
>Зачем? Рекурсия - это говнокод. Её использование усложняет читаемость и отладку кода. Следует максимально избегать её использование.
Кто тебе такое сказал. Все как раз наоборот.
Аноним 28/12/18 Птн 22:07:45 131803241
>>1317544
>Сама по себе рекурсия сложно читаемая
Что за глупость. Рекурсия легко понимается человеком, в отличие от циклов, где замешано состояние.
Аноним 28/12/18 Птн 22:08:17 131803442
>>1317657
>Хвостовая рекурсия - это то, что мы называем циклом?
Нет.
Аноним 28/12/18 Птн 23:58:14 131809843
Аноним 29/12/18 Суб 10:52:34 131825144
>>1318032
есть исследования на этот счёт?
само по себе не очевидно, что явно указанное состояние понимается человеком хуже, чем передача измененных параметров, особенно когда эти параметры приходится добавлять как раз чтобы сохранить в них состояние )
Аноним 29/12/18 Суб 11:43:57 131825745
>>1318251
Рекуррентные формулы и рекурсивные функции преподают в школьной математике. Рекуррентная формула содержит в себе решение, его нужно просто перенести в код. Это естественное представление задачи, легко понятное, и такие задачи легко решать. Формула факториала например https://wikimedia.org/api/rest_v1/media/math/render/svg/061936c90772779b902414ec897902cc4b61ca06
Аноним 29/12/18 Суб 11:58:35 131826746
>>1317535

Императивное чмо закукарекало.
Аноним 29/12/18 Суб 12:19:30 131828147
>>1318267
Дебил. Императивное программирование - единственное программирование. Твои функциональные интерпретаторы написаны императивно.
Аноним 29/12/18 Суб 12:39:48 131829048
>>1318281
Математика была раньше, а ней декларативный подход. Тот факт, что архитектура фон Неймана, которая используется в современных процессорах построена на императивных принципах, не о чем не говорит. Тем более не говорит о том, что программировать нужно императивно. Декларативный подход проще, мощнее, легко поддерживается и изменяется.

Из-за архитектуры фон Неймана невозможно нормально параллелить код. А функциональные языки легко позволяют это делать.
Аноним 29/12/18 Суб 12:45:33 131829249
>>1318281
Изучи понятие абстракции и барьера абстракции. Трансляторы функциональных языков как и сами языки это абстракции над процессором. Для того чтобы можно было писать не императивно как хочет того процессор, а декларативно, как хочет того мозг. Абстракции для того и нужны, чтобы повышать удобство, понятийный уровень, не быть ограниченным. Программирование это процесс построения и использования абстракций. Так где причина их не использовать? Ты противоречишь цели ради которой все это существует.
Аноним 29/12/18 Суб 12:46:45 131829450
>>1318281
Пиши тогда в машинных кодах. Раз отвергаешь абстракции.
Аноним 29/12/18 Суб 20:37:25 131845351
>>1318257
Ну и что, частные суммы (Сигма) тоже преподают, и именно как сумма элементов с i=1 до =n , а не через рекурсию с накопителем.
Так что не аргумент
Аноним 29/12/18 Суб 20:41:58 131845752
>>1318290
> Тот факт, что архитектура фон Неймана, которая используется в современных процессорах построена на императивных принципах, не о чем не говорит
Отрицает реальность. Смешивает архитектуру и языки, забывая, что если его %FP-language% так охуенно параллелит код, то делает он это на всё той же архитектуре (и этот же код можно написать на асме/С )
Аноним 29/12/18 Суб 22:48:00 131848353
Рекурсия это один из способов реализовывать парадигму функционального программирования. И применять ее надо там, где ты не хочешь создавать состояние(state), для того чтобы исключить ошибки, вызванные изменением того самого состояния. В современном программировании надо владеть как функциональщиной, так и итеративщиной, и четко понимать, где и что надо использовать. Говорить, что одно лучше другого без привязки к задаче это глупости.
Аноним 30/12/18 Вск 12:44:11 131865854
Не путайте рекурсию с фракталами, это совершенно разные предметы.
Аноним 30/12/18 Вск 13:32:18 131868055
>>1318453
А где в суммах цикл углядел? sum (map f) [1..n]
Аноним 30/12/18 Вск 17:47:22 131874656
image.png (28Кб, 280x138)
280x138
>>1318680
Мы тут про школу и интуитивно понятное чтение
Аноним 30/12/18 Вск 19:33:48 131876757
>>1307192
хули его не обосрали?
Аноним 31/12/18 Пнд 12:19:56 131908158
>>1318294
Алло, есть императивные абстракции. Алсо машинный код - топ. Но вообще всё это сосёт по сравнению с дискретными математическими моделями.
Аноним 31/12/18 Пнд 12:21:48 131908359
>>1319081
>дискретными математическими моделями
Нинужное говно
Аноним 31/12/18 Пнд 22:39:34 131925760
>>1318746
В математике нет интуитивно понятного чтения.
Аноним 31/12/18 Пнд 22:52:54 131926361
>>1319257
>интуитивно понятного чтения.
они как вороны, пиздят наиболее красивые символы без всякой систематики
Аноним 01/01/19 Втр 11:29:13 131933862
Аноним 01/01/19 Втр 12:35:11 131934263
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Топ тредов
Избранное