УСКОРЬ СВОЙ КОД В МИЛЛИОН РАЗ | РЕКУРСИЯ | АЛГОРИТМЫ

Поділитися
Вставка
  • Опубліковано 25 гру 2024

КОМЕНТАРІ • 519

  • @konstantinsh8977
    @konstantinsh8977 2 роки тому +456

    Суть видео коротко: Как ускорить код с рекурсией в 1 000 000 раз? Переписать код, не используя рекурсию.

    • @timt.4777
      @timt.4777 2 роки тому +12

      @Vladimir Apolaiko мемоизацию. Memory + Optimization = Memoization.

    • @КириллЧе-я5ы
      @КириллЧе-я5ы 2 роки тому +11

      @@vladimirapolaiko4641вероятно, любую рекурсию можно превратить в итеративный процесс, используя стек на куче…

    • @hgmdev
      @hgmdev Рік тому +3

      Использование кеша или своего стека замедлит твой код в сотни раз, а не ускорит

    • @alevadkal4179
      @alevadkal4179 Рік тому

      ​@@vladimirapolaiko4641, создаёшь стек на куче?😅

    • @AlexandroLavichez
      @AlexandroLavichez Рік тому +1

      @@hgmdev почему?

  • @gmadmin8529
    @gmadmin8529 3 роки тому +122

    Великолепный канал. Подробно, понятно и глубоко проработанный материал. Видео с инфографикой просто прекрасно сочетаются! Продолжайте развивать канал, а мы вас поддержим. Прошу, создайте ролик о BIOS и инициализации в момент включения PC, а также о взаимодействии устройств Matheboard, CPU, VGA, RAM и т.д., boot OS и о влиянии BIOS на систему вцелом.

    • @DiamondSane
      @DiamondSane Рік тому

      matherboard это какая-то питоновская библиотека?

    • @ДмитрийЧебанов-ю1м
      @ДмитрийЧебанов-ю1м Рік тому

      @@DiamondSane Matheboard же

    • @DiamondSane
      @DiamondSane Рік тому +4

      @@ДмитрийЧебанов-ю1м я хотел посмеяться над неграмотностью человека, но оказалось я сам невежественен. Чтож, бывает.

    • @perry9307
      @perry9307 7 місяців тому

      Ахахахах​@@DiamondSane

  • @ДаниилАстаев-ы1ю
    @ДаниилАстаев-ы1ю 3 роки тому +38

    *Проснитесь и пойте мистер Фримен, вас снова ждут великие уроки программирования*

  • @vladislavzainullin
    @vladislavzainullin 3 роки тому +32

    Alek, вы делаете очень качественный, понятный и актуальный контент по весьма специфическим темам. Восторгу нет предела)

  • @brr3534
    @brr3534 3 роки тому +173

    Очень понятное объяснение - с каждым вызовом все понятнее %) Кстати, было бы круто увидеть ролик про асинк программирование, но это уже влажные.

    • @ВладиславГришин-ш7ш
      @ВладиславГришин-ш7ш 3 роки тому

      а что тут такого? допустим есть нужда асинхронно выполнить некую задачу. в памяти создается так называемый асинхронный код. этот код подвешивает сам себя средствами/возможностями операционной системы (передает ей управление). После наступления нужного события в коде операционной системы для асинхронного кода (записаны данные в буфер сокета который читает асинхронный код, сработал таймер вызванный асинхронным кодом), операционная система возобновляет (передает управление) выполнение асинхронного кода. в основном теле программы проверяем в цикле коды завершения и результат асинхронного кода. Асинхронный принцип в некоторых ЯП реализован в виде корутин - в которых в явном виде идет переключение между корутинами, но не для всех задач можно использовать корутины.

    • @alexshpaq
      @alexshpaq 3 роки тому +8

      @@ВладиславГришин-ш7ш как то запутанно объяснил. В асинхронном программировании поток выполнения можно сравнить с рабочим на фабрике, если процесс изготовления детали (алгоритм, он же код программы) грамотно разбить на подэтапы, то по достижению этапа, при котором участие рабочего не требуется (обжиг в печи/ожидание ответа по сети), рабочий может спокойно приступить к работе с другой деталью, новой либо уже "обоженной" в печи, а к той что сейчас в печи вернуться позже, когда этап ее обжига в печи завершится

    • @tirsky
      @tirsky 2 роки тому

      Есть очень крутой ролик на эту тему ua-cam.com/video/2IW-ZEui4h4/v-deo.html

  • @VitaliyZlobin
    @VitaliyZlobin 2 роки тому +2

    Отличный труд! Благодарю)
    Так можно сократить проверку базового случая в 2 раза: if(n < 2) return n;

  • @uladzimirdrazdou1563
    @uladzimirdrazdou1563 2 місяці тому

    Самое лучшее объяснение рекурсии, из которых я когда либо видел. Еще и способы оптимизации. Спасибо огромное за такое детальное разъяснение!

  • @СергейКрупка-ь2и
    @СергейКрупка-ь2и 3 роки тому +10

    Очень доходчиво рассказываешь, и что немало важно, наглядно. Спасибо!

  • @mihfil43
    @mihfil43 3 роки тому +26

    Лайк поставили, ждем продолжение ассемблера

    • @alexandervachenko7076
      @alexandervachenko7076 3 роки тому

      Поддерживаю. Я на этот канал только из-за ассемблера обратил внимание.

    • @drKatzman
      @drKatzman 3 роки тому

      В тред набежали подвыгоревшие мидлы.

    • @vadimsergeev7874
      @vadimsergeev7874 3 роки тому

      @@Uni-Coder лучше ничего не трогать, пусть все работает как есть, даже если ты изучишь ассемблер с этого канала)))

    • @serhiis_
      @serhiis_ 3 роки тому

      @You Tube SIMD писать можно только на ассемблере. На С++ и СИ нет поддержки SIMD. Поэтому многие алгоритмы, например умножение матриц/векторов и тд написано на asm через SIMD-инструкции

    • @serhiis_
      @serhiis_ 3 роки тому

      @You Tube Писать свое не обязательно. Есть готовые функции в открытом доступе.

  • @Pavel_6C
    @Pavel_6C 3 роки тому +14

    Лучшее объяснение рекурсии, которое я когда-либо видел!
    Спасибо большое)

  • @shumiagavara2079
    @shumiagavara2079 3 роки тому +19

    Круто рассказываешь, конечно, под конец чёт уснул из-за недосыпа, а так красиво чётко и понятно. Мне приятно потратить своё время на данное видео.

  • @meerable
    @meerable 3 роки тому +72

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

    • @redhook777
      @redhook777 Рік тому +2

      Это же очевидно

    • @JohnSmith-th9pc
      @JohnSmith-th9pc Рік тому +2

      Выполняется один и тот же кусок кода, при каждом вызове создается копия локальных переменных ф-ции, копия кода не создается. Поэтому при рекурсии следует уделить внимание реентерабельности функции. Но это отдельная тема.

  • @mianaviatte
    @mianaviatte 3 роки тому +11

    @Alek OS, всем сердцем и разумом благодарю за это видео. Пересмотрела весь канал, дошла до рекурсии...
    Учу Python, тут нативка про обучение Python... потом смотрю пятую минуту видео, где представлен кусочек кода. Без задней мысли кидаю кусочек кода себе в VSC в .py файл, чтоб потестить. Бьет ошибки. Решаю как всегда, что я дура и чего-то не так написала. Начинаю дебажить... через 2,5 часа в самом конце правок случайно узнаю, что это Java.
    Получилось, что я перевела случайно кусок кода с Java на Python... это как с немецкого на английский, не зная немецкий... после всех стадий гнев, торг, восторг... спасибо огромное! такая шикарная практика на ровном месте!
    До конца вашего видео для прикола и практики переводила все примеры кода)))

    • @cordestandoff2358
      @cordestandoff2358 3 роки тому +1

      Блин, я думал это си)

    • @borojai8569
      @borojai8569 2 роки тому +1

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

    • @Evgen__B
      @Evgen__B 2 роки тому +1

      @@borojai8569 и в яве, и в сях, и в плюсах, и в шарпе - во всей этой братии фигурноскобочных-точкосзапятыми языков.

    • @alexandrtelitsyn1207
      @alexandrtelitsyn1207 2 роки тому

      @@cordestandoff2358 я тоже так думал

    • @develmen1
      @develmen1 2 роки тому +5

      это так принято у программистов - хвалить питон но писать на чем то другом ;)

  • @jaxjaximus8803
    @jaxjaximus8803 3 роки тому +7

    Очень хорошие объяснения. Впервые что-то дельное о программировании, а не только ересь про заработки, и объяснено нормальным русским языком, а не тем, на чем сейчас разговаривает большинство "программистов". Даешь алгоритмы и железо! =) Да здравствует нижний уровень! ))

    • @olaflappalainen3109
      @olaflappalainen3109 3 роки тому

      Не забивай голову, учи питон+джанга.

  • @alexfantast6566
    @alexfantast6566 3 роки тому +9

    Довольно сложная тема простыми словами) Пришлось пересматривать несколько раз, дабы вникнуть в суть, но в итоге потихоньку догнал тему. Спасибо за этот ролик 👍

  • @AleksandrNeo
    @AleksandrNeo Рік тому +2

    Одно из самых понятных объяснение алгоритма для фибоначи, спасибо)

  • @vadimsergeev7874
    @vadimsergeev7874 3 роки тому +3

    Помню когда в первый раз столкнулся с рекурсией, дали задачу в 1С разобрать спецификацию изделия, в котором много узлов, состоящих из узлов и номенклатур входящих в них, вот тогда то я был в тупике... сейчас с улыбкой вспоминаю просматривая данное видео. Автор спасибо большое😊

    • @letshev
      @letshev 3 роки тому +6

      вы учили 1С? за что вы так с собой поступили? )))))

    • @serhiis_
      @serhiis_ 3 роки тому +1

      изучать 1С это еще хуже чем изучать WEB на Python. Сочувствую и вам и тем кто решил изучать WEB на Python

    • @serhiis_
      @serhiis_ Рік тому

      @Ambulate In Somnis ну это как гвоздь забивать стеклянным стаканом. Забить та можно, но не факт что после этого руки и психика целы останутся. Хочешь веб - учи ангуляр, вуй, нод, тайпскрипт. Че нравится то и учи ну и смотри с вакансий в первую очередь. А фулстекером мальчиком на побегагках, который и микроволновку починит, ты всегда успеешь таким стать. Я чет не сомневаюсь что 1c-ники и холодильники чинят и босу джип с толкача заводят. Чем зашкварнее работа, тем зашкварнее отношение к сотрудникам, исключения редкие

  • @nerusnotfound
    @nerusnotfound 3 роки тому +4

    *Лучшая инфографика по программированию которую я видел* 👍

  • @n1kst4r16
    @n1kst4r16 3 роки тому +1

    Случайно попал на ролик, заинтересовал названием (которому не поверил, как оказалось и правильно) и тем, что мелькнул Python.
    Итог: рассказ, где-то неплохой, но прям для новичков, а весь смысл сводится к "используйте адекватный алгоритм". Единственное, что стек объясняет по ходу ролика.
    Но не могу сказать, что посмотрел зря, уж очень повеселила аудитория)
    Хммм, мне понравилось как объяснили стек, я разобрался, когда будет:
    * асинхронное программирование
    * язык ассемблера
    * алгоритмы и железо
    Насколько же это не линейно... И такое желание залезть глубже, когда не разобрались даже на поверхности.
    Лучше этого только те люди, которые задают вопросы по тому (!!!) что объясняется в ролике

  • @a.osethkin55
    @a.osethkin55 3 роки тому +3

    Круто. Ждём аналогичный разбор задачи комивояжера

    • @strekozart
      @strekozart 3 роки тому

      было бы круто

  • @alexkazimir3835
    @alexkazimir3835 Місяць тому

    Уровень материала просто восторг🎉

  • @phil2964
    @phil2964 3 роки тому

    Реально самый крутой и полезный канал на Ютубе в IT сфере!!!👍👍👍

  • @TpyHaGuBaTop
    @TpyHaGuBaTop Рік тому +3

    Огромное спасибо за видео, теперь гораздо лучше понимаю рекурсию. Отдельное спасибо за то, что в конце показал способ создания псевдо рекурсии. Решая задачки на литкоде часто видел, как используют стек со специально созданным типом и циклом while(stack.size > 0), и теперь понимаю что это такое 😊

  • @samav99
    @samav99 3 роки тому +3

    О рекурсиях раньше только слышал. Понимание продержалось до 7:53, потом поплыл. Позже буду пересматривать - разбираться шаг за шагом. Очень плотное содержание. И это круто. Продолжай так же

  • @dmanfi
    @dmanfi Рік тому +3

    чтобы понять рекурсию, надо понять рекурсию

  • @boson_higgs
    @boson_higgs 3 місяці тому

    Вот оно значит что такое структура данных! Спасибо !

  • @whoareyouqqq
    @whoareyouqqq 3 роки тому +36

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

    • @alexey2
      @alexey2 3 роки тому +2

      Если ты так думаешь то, я бы тебе посоветовал бросить программирование, это не твое

    • @crabby3936
      @crabby3936 3 роки тому +15

      @@alexey2 а что не так? Всегда лучше вариант без накладных расходов. И нельзя вместо громких фраз приводить конкретные контраргументы?

    • @KazakovNik
      @KazakovNik 3 роки тому +11

      @@crabby3936 он трепло чего от него ожидать. по теме код должен быть максимально читабельным чего рекурсия не дает. тоже самое с любимыми студентами фичами языка типа как ужать код в 1 строку. студентам не вдомек что программисты зачастую код шпилят по 13 часов и все эти выкрутасы выносят мозг не хуже GOTO который прокляли всем сообществом.

    • @crabby3936
      @crabby3936 3 роки тому +2

      @@KazakovNik иногда рекурсивный вариант читаемее, только сегодня решал одну несложную задачку на контесте, первый вариант с рекурсией был (немного) читаемее, но падал из-за переполнения этого стека вызовов
      А суть претензии так и не понял, такие громкие слова тем более -- наверно правда троллинг ради троллинга, а не по этой теме претензия

    • @Lex_VVV
      @Lex_VVV 3 роки тому +10

      @@alexey2 всегда, когда можно не использовать рекурсию - нужно не использовать рекурсию. И если ты считаешь иначе - лучше тебе бросить программирование!

  • @romanstelar
    @romanstelar 2 роки тому +9

    Спасибо за наглядную визуализацию! Это очень помогает пониманию

  • @kiki_van_gog
    @kiki_van_gog 2 роки тому

    поздравляю с 100к подписчиков)

  • @МаркСметанкин
    @МаркСметанкин Рік тому

    Дядь, здорово объясняешь. Тебя даже ветеринар понимает).

  • @MultiOpachki
    @MultiOpachki 3 роки тому +4

    При оптимизации хвостовой рекурсии (и вообще любых произвольных хвостовых вызовов) достаточно аккуратно изменить последний кадр стека. Таким образом на стеке всегда висит ровно один кадр при любой сколь угодно большой вложенности хвостовых вызовов. Переполнения стека нет, рекурсивный алгоритм такой же быстрый, как и цикл, все счастливы. Слава TCO, которой, к слову, нет в Пайтоне!

    • @MultiOpachki
      @MultiOpachki 3 роки тому +1

      ​@@КириллМихайлов-ж3х Некоторые задачи проще, быстрее и понятнее решить рекурсией. А зачем писать цикл, если компилятор сам за тебя его сделает?

    • @fareloz
      @fareloz 3 роки тому +3

      @@КириллМихайлов-ж3х Рекурсивный код может выглядеть намного проще для чтения и понимания

    • @ChannelCheesecake
      @ChannelCheesecake 3 роки тому +2

      @@КириллМихайлов-ж3х dfs lca dsu segtree и ещё 100500 алгоритмов и сд без рекурсии больно писать. Рекурсия такой же инструмент как for while do…while, никто же не спорит, что лучше for или while по причине бессмысленности спора

    • @Dmytro-Tsymbaliuk
      @Dmytro-Tsymbaliuk 3 роки тому

      рекурсия медленнее цикла

    • @ChannelCheesecake
      @ChannelCheesecake 3 роки тому

      @@Dmytro-Tsymbaliuk рекурсия реализует другой механизм, нужный для других задач, нежели цикл, глупо утверждать, что рекурсия хуже из-за того, что медленнее. Молоток хуже отвертки из-за того, что тяжелее?

  • @levoradikal
    @levoradikal 3 роки тому +2

    Игры отменяются, Алекос выпустил видос

  • @sovrinfo
    @sovrinfo 2 роки тому

    Спасибо за огромную работу, которую вы проделали. Всегда с интересом смотрю ваши выпуски

  • @seoonlyRU
    @seoonlyRU 3 роки тому +1

    вот за этой объяснение спасибо, с ходу лайк от вебмастера и гуру по сео-шмео СЕООНЛИ

  • @dudavik7877
    @dudavik7877 Рік тому +1

    Люди делятся на два типа: на тех, кто знает, что такое рекурсия, и на тех кто знает что люди делятся на два типа

  • @DezelDanmark
    @DezelDanmark 2 роки тому +1

    Отличный канал! Спасибо за грамотную речь и суперское видео! :)

  • @sckygera
    @sckygera 3 роки тому

    Спасибо огромное за видос! Немного подтяну свои знания и пересмотрю еще раз =)

  • @ДмитрийХабаров-о7о
    @ДмитрийХабаров-о7о 3 роки тому +139

    Я не очень понял. А ускорение в миллион раз где произошло? Когда мы применили итеративный способ? Так вроде это самый первый способ которому учатся все програмисты. В чем тогда суть видео? Рассказать про рекурсии? Интересно, конечно, но тогда это дичайший кликбейт. Хотя само видео клевое.

    • @ИванИваныч-н3у
      @ИванИваныч-н3у 3 роки тому +7

      Я так понял что в разделе динамическое программирование, для расчета 100 числа Фибоначчи

    • @ДаниилАстаев-ы1ю
      @ДаниилАстаев-ы1ю 3 роки тому +13

      Как-то вы вот невнимательно смотрите, на примере вычисления фибоначчи от 100 через рекурсию потребуются сотни лет, чтобы обычный комп это посчитал, а избавившись от рекурсии используя динамическое программирование код выполнится за секунду+-, так что получается код ускоряется намного больше чем в миллион раз

    • @ДмитрийХабаров-о7о
      @ДмитрийХабаров-о7о 3 роки тому +12

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

    • @ДаниилАстаев-ы1ю
      @ДаниилАстаев-ы1ю 3 роки тому +3

      @@ДмитрийХабаров-о7о Как я понял, идея видео в том, чтобы показать проблемы рекурсии и как их можно решить.
      Конечно задачу с фибоначчи необязательно решать через рекрсию, просто Фибоначчи это простой и наглядный пример, который не так сложно разобрать, к чему рекурсия может привести, вот и все. А на примере того что код ускорился в миллионы раз, проблема некоторых неосмысленных рекурсивных решений становится ещё наглядней.

    • @ДмитрийХабаров-о7о
      @ДмитрийХабаров-о7о 3 роки тому +1

      @@ДаниилАстаев-ы1ю Может быть. Для меня то, что вы написали совсем неочевидно, но я и не програмист. Для меня просто сама рекурсия стала понятнее.

  • @ShkiperDesna
    @ShkiperDesna Рік тому

    Я зашёл на это видео с мыслями "как можно ставить слова "рекурсия" и "ускорение кода" в одном предложении?" Ушёл, убедясь в этом ещё сильнее.

  • @sisoniykvitaliy7172
    @sisoniykvitaliy7172 3 роки тому

    Великолепный канал. Подробно, круто и глубоко проработанный материал

  • @snigs6832
    @snigs6832 2 роки тому

    Залез на ютуб, чтобы раслабить мозг в итоге снова загрузился, но инфа интересная, спасибо

  • @noname1999x
    @noname1999x 3 роки тому +1

    Поздравляю с первой рекламой! Видео как всегда актуально и хорошо объяснено. Спасибо ❤️

  • @ПавелВасильев-ц4м
    @ПавелВасильев-ц4м 3 роки тому

    Крутое видео. Теперь нужно видео, об обходе в ширину.

  • @Ave_Viktor
    @Ave_Viktor 3 роки тому

    Благодаря вам заинтересовался устройством компьютера и понял что раньше вообще не понимал, как будто это был черный ящик))

  • @ciklomat
    @ciklomat 3 роки тому +1

    OS ты АС. Рад видеть твои методы.

  • @irgendwer234
    @irgendwer234 3 роки тому

    Спасибо огромное за объяснение. Очень помогло с написанием парсера языка программирования

  • @xm4dn355x
    @xm4dn355x 3 роки тому +3

    Полностью согласен с фразой в конце ролика: "Решение таких задач прокачивает ваше мышление и ты просто становишься лучшей версией себя".

  • @leo_bonifacio
    @leo_bonifacio 3 роки тому

    Спасибо большое за видео. Многое для себя нового открыл)

  • @timafonalexsandr7564
    @timafonalexsandr7564 2 роки тому

    Блин 2 года назад этого не понимал. А сейчас наконец то понял. Спасибо за видео!!!

  • @КонстантинСмоленцев-е2у

    Классно, очень полезно, я лайк поставил.
    Есть одно замечание: режет слух выражение "со стека". Данные ведь хранятся в стеке, а не на стеке. Получается, что удаляются или получаются они из стека, а не "со стека".
    Классный канал: всё подробно объясняется, можно легко разобраться в сложных вещах. Благодарю за труды и прошу продолжать в том же духе! ;-)

  • @RealayVR
    @RealayVR 3 роки тому +12

    Здравствуйте, будет продолжение по ассемблеру?

  • @kinfi4836
    @kinfi4836 3 роки тому

    На наших глазах появляется пожалуй лучший русскоязычный канал по тематике программирования

  • @pinguinunique3605
    @pinguinunique3605 Рік тому

    Спасибо за видео, всё очень понятно и доступно

  • @qqpdhoqdhh9090
    @qqpdhoqdhh9090 2 роки тому

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

  • @pypetype6935
    @pypetype6935 3 роки тому

    Видео очень качественное, спасибо. Очень полезно, так как только начинаю.

  • @kostyakryhtin5043
    @kostyakryhtin5043 2 роки тому +2

    Привет Алекс, хорошее видео, отлично обьяснили как работает рекурсия под капотом, только я так и не понял как именно рекурсия ускоряет код хотя бы 2 раза. Почему та же функция полинтрома будет бежать быстрее через рекурсию, чем через обычный фор и в чем преимущество рекурсии? Название видео "ускорь код в миллион раз", но как например та же рекурсия по матрице будет бежать быстрее чем 2 фора. Наверное я что-то упустил, пожалуйста, если не сложно, приведите пример когда рекурсия будет работать гораздо быстрее другого хорошо написаного кода через for и while с теми же ifами. Как имеено рекурсия ускорит мой код хотя бы в 2 раза по сравнению с нормально написаным итеративным алгоритмом? И если вдруг не ускорит, то в чем заключается преимущество рекурсии?(считая что определенные минусы в ней есть, кроме того что зачастую она менее интуитивно понятна) Большое спасибо, надеюсь получить ответ и жду следующего видео!

  • @Shalve94
    @Shalve94 2 роки тому

    Хорошоюее объяснение материала + отличное визуальное сопровождение

  • @SuperGrizlik
    @SuperGrizlik Рік тому +1

    Мне кажется правильнее сказать, как увеличить скорость программы? Нужно с пайтона перейти на си... А не с рекурсиями бороться...

  • @eduardmart1237
    @eduardmart1237 3 роки тому

    Как всегда очень круто сделано!)

  • @openFrimeTv
    @openFrimeTv 3 роки тому +4

    блин, да что за трек на фоне?) скажи пожалуйста

    • @run_nur
      @run_nur 2 роки тому

      Нашёл?

  • @strekozart
    @strekozart 3 роки тому +4

    Спасибо за информацию!
    Можно такие же видео про основные алгоритмы с примерами кода и использование. Будет бомба!

  • @ИванПотапов-ь2щ
    @ИванПотапов-ь2щ 2 роки тому +8

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

    • @MrLolthe1stDevChannel
      @MrLolthe1stDevChannel 2 роки тому

      определитель матрицы не ищется рекурсивно, это тупо и долго. его ищут методом Гаусса за n^3

  • @AidekovAR
    @AidekovAR Рік тому

    Спасибо!!! Смотрю с интересом.

  • @Bagdashka
    @Bagdashka 2 роки тому

    Как ускорить код в миллион раз? Пересмотреть видео миллион раз.

  • @sprog4168
    @sprog4168 3 роки тому +2

    Не знаю повлияло ли это, но под каким то из твоих видео я просил чтобы ты делал фоны тёмными, спасибо что услышал и сделал хотя бы часть фонов с кодом на чёрном фоне, так всё воспринимается намного лучше!

  • @nen777w
    @nen777w 3 роки тому +1

    Можно было во втором случае (вычисление чисел Фибоначи) вместо первых двух if написать один if(1>=n) return n; Ну и вместо выделения масива на n - элементов можно было использовать только две переменные. Во избежания случая когда нам передали отрицательное n, можно использовать беззнаковый тип.

    • @rawil6751
      @rawil6751 3 роки тому +1

      Можно, но прочитать код сходу будет сложнее. А зачем его просто так усложнять?

    • @rawil6751
      @rawil6751 3 роки тому

      Это я про первое замечание.

    • @nikolay7658
      @nikolay7658 2 роки тому

      Unsigned в Java?)

  • @romankopylov5013
    @romankopylov5013 3 роки тому +1

    Спасибо за крутой и понятный контент)
    Давай больше видео по алгоритмам и их вариациям )

  • @cliffa-net
    @cliffa-net 2 роки тому

    Представьте стек в виде массива - и вам замещение рекурсии циклом. Вызов функции с переменной-структурой-данных первым аргументом - и вот вам замещение ООП обычными функциями (ну почти, там ещё наследование).. Вызов функции - это обычный goto с запоминанием точки выполнения goto и последующим возвратом в неё. Любая методология программирования - это преобразование одних методов в n-мерном пространстве в другие через n+1 измерение. Если сможете думать объёмно, тогда у вас сотрутся все границы между методами, и вы сможете ими жонглировать, как сосиской на вилке на завтрак, и делать свои приложения максимально эффективно.
    Рекурсия не сильно выигрывает по времени у цикла - только за счёт избыточной работы с памятью - мы постоянно копируем одни и те же переменные во всё новые и новые ячейки памяти. Единственная реальная проблема рекурсии - это стек, он всегда ограничен, но зато работает сильно быстрее и не фрагментируется, в отличие от кучи. И я не понимаю, почему тут говорится про миллионный прирост скорости в связке с рекурсией, это не так. И автор хорошо это знает (я прекрасно понимаю уровень его квалификации, она прекрасно просматривается по нескольким видео). Кликбейт? некрасиво!
    Зато в видео про миллионный прирост в скорости почему-то видим такие фрагменты вроде "if ((i == 0) || (i == 1))" при вычислениях только на положительных числах. Сущая мелочь, но выглядит странно под подобным заголовком.
    Кэш? да, в числах фебаначи показан очень эффективный способ применения кэша. Заодно внезапно(!) кэш и стал тем самым массивом переложения рекурсии в цикл. Только оборачивается всё это в кучу терминов.
    Забейте на термины! они мешают вам мыслить объёмно! Зацикливание на терминах, это застревание в N-1 мерном пространстве, где N - это размерность пространства, в котором вы реально способны мыслить на данном этапе. Термины нужны только для синхронизации мышления с другими. Например, если работаете в команде над одним проектом. При самостоятельном развитии - это только якорь.

  • @themarrionetter
    @themarrionetter 3 роки тому +6

    Я ещё не посмотрел это видео, но смотря на остальные видео, решил сразу поставить лайк

  • @sergeys4732
    @sergeys4732 3 роки тому

    Боже сколько же ты сил и души вкладываешь в видео!! Респект

  • @y.shaniyev
    @y.shaniyev 3 роки тому

    Круто объяснил рекурсию 👍

  • @КонстантинГолубович

    Большое спасибо за труд!

  • @vedertt
    @vedertt 2 роки тому

    зачетный суперовый расклад .))

  • @МихаилНовиков-р6ч

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

    • @namelessboar
      @namelessboar Рік тому

      На литкоде даже такие задачи есть в топике "динамическое программирование".

  • @ВильянЯумбаев
    @ВильянЯумбаев 2 роки тому

    Лучший! Планируешь ли ролик про быстродействие условных конструкций и как из избегать?

  • @iliaastafev5029
    @iliaastafev5029 2 роки тому

    09:45 - а я то уже успел испугаться что ты реально предлагаешь палиндром и факториал рекурсивно считать :)))

  • @КириллЧе-я5ы
    @КириллЧе-я5ы 2 роки тому +1

    Превосходно!

  • @viper_0097
    @viper_0097 10 місяців тому

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

  • @07031996zhz
    @07031996zhz 3 роки тому

    Многое не понял, но очень интересно!

  • @evgeniy_lebedev
    @evgeniy_lebedev 3 роки тому

    Здравствуйте! Ребята, кто споткнулся на моменте 7:58, и не понял дальше, обратите внимание, что там factorial(n-1) * n, а не factorial( (n-1)*n ). С любовью, ваш кэп.

  • @SL42SS
    @SL42SS 3 роки тому

    высокая информативность и доступность видосов , продолжай творить

  • @ПавелГолубев-п8о
    @ПавелГолубев-п8о 3 роки тому

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

  • @ruslandad365
    @ruslandad365 Рік тому +1

    Ахахаха
    Stack Overflow 😏😉

  • @ДарьяПокровская-в7в

    Классное видео) нашла то что искала

  • @ильяесин-х7ш
    @ильяесин-х7ш 3 роки тому +4

    Не понимаю
    К чему название ускорение кода и вызов функции. Думал услышать что то более интересное

    • @ИванИваныч-н3у
      @ИванИваныч-н3у 3 роки тому

      Ну как бы сначала код решал задачу сильно медленнее чем в конце с применением динамического программирования, и разница довольно ощутима

  • @NicolyaLS
    @NicolyaLS Рік тому

    Числа Фибоначчи проще искать через "золотое сечение" - трюк из линейной алгебры

  • @realfootball338
    @realfootball338 3 роки тому +2

    Если не секрет в какой программе создаешь эти презентации ? Я сейчас пишу книгу но в добавок к книге хотел бы сделать пару анимированных визуальных обьяснялок.

  • @dv3148
    @dv3148 2 роки тому

    Материал не нов, но подача великолепна. Ps : не подскажете ли, что за музыка играет в фоне? Оч способствует процессу программирования...

  • @quartz5555
    @quartz5555 3 роки тому +3

    13:14 Всем привет, дайте пж музыку из этого момента

    • @run_nur
      @run_nur 2 роки тому

      Нашёл?

  • @Myopening-l3q
    @Myopening-l3q Рік тому

    4:51 Подскажите. Какой это язык программирования?

    • @hightstar9292
      @hightstar9292 8 місяців тому

      Надеюсь не поздно, синтаксис похож на java

  • @ВикторКуркучеков
    @ВикторКуркучеков 2 роки тому

    Спасибо за отличные видео! Вопрос, какю программу используете для создания "слайдов" из видео?

  • @ProgMiner
    @ProgMiner 2 роки тому

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

  • @hey4nm
    @hey4nm 3 роки тому +28

    Важная пометка: если вы ищете число последовательности - сто раз загуглите есть ли общая формула, или попытайтесь её вывести, не городите лишнее повторение кода

    • @ATAFAKskibidi
      @ATAFAKskibidi 3 роки тому

      в формуле n-ого члена Фиббоначи есть иррациональные числа, они затормозят процесс

    • @hey4nm
      @hey4nm 3 роки тому

      @@ATAFAKskibidi А если делать цикл они его не затормозят?)

    • @hey4nm
      @hey4nm 3 роки тому

      @алексей Который обычно предлагают писать, мой первый комментарий о чём по-твоему?

  • @Anatolii_V_Novikov
    @Anatolii_V_Novikov Рік тому

    Странно конечно в конце прийти к тривиальному алгоритму)

  • @ВасилийШумилов-о8ь
    @ВасилийШумилов-о8ь 3 роки тому +1

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

    • @ВасилийШумилов-о8ь
      @ВасилийШумилов-о8ь 3 роки тому +3

      @@КириллМихайлов-ж3х правильно, эффективен тот код который который хорошо читаем и не содержит патологических ошибок, в эпоху гигагерц и гигабайтов это значительно важней

    • @КотЧерный-ю1ф
      @КотЧерный-ю1ф 3 роки тому +1

      @@КириллМихайлов-ж3х не скажите. Красота эффективной реализации будет сильно зависеть от того как вы спроектировали архитектуру этого самого кода. Иногда данные просто структурированы таким образом, что с такими структурами просто невозможно работать эффективно. Но это совершенно не означает, что если вы измените структуру этих самых данных в сторону увеличения эффективности работы с ними, код обязательно должен быть уродливым и непонятным. Я неоднократно сталкивался с ситуацией, когда небольшие переосмысления в архитектуре приводили одновременно и к повышению эффективности самого кода и к уменьшению количества этого кода.

    • @Lex_VVV
      @Lex_VVV 3 роки тому

      @@ВасилийШумилов-о8ь смотрю я на вас и понимаю, почему всё так плохо с IT...

    • @Lex_VVV
      @Lex_VVV 3 роки тому

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

    • @ВасилийШумилов-о8ь
      @ВасилийШумилов-о8ь 3 роки тому

      @@Lex_VVV я вообще-то не айтишник, да и сам бы порой готов киянкой пальцы размножить тем бракоделам которые нам приложения на пишут

  • @ИванЛягушка
    @ИванЛягушка Рік тому +1

    Я решал задачу с палиндромом просто переворачивая слово и сравнивая с изначальным

    • @YuriBakharev
      @YuriBakharev Рік тому

      Смотрел ролик, тоже вспомнилось.
      На информатике, ещё на бейсике.
      Давался некий текст.
      Из него надо было надергать симметричные слова.
      Цикл.
      Брал первое слово.
      Зеркалил его, чтобы не зеркалить все остальные.
      Перебирал оставшийся текст.
      Если находил что-то, записывал в файл.
      А как обойти чехарду в регистре, я не придумал тогда)))
      Оно оно

  • @redfox7193
    @redfox7193 2 роки тому

    Я вот так формировал последовательность чисел Фибонначи:
    int fib;
    int first = 0;
    int second = 0;
    for (int count = 0; count = 2)
    {
    fib = first + second;
    first = second;
    second = fib;
    print(fib);
    }

    • @redfox7193
      @redfox7193 2 роки тому

      и никаких рекурсий =)

  • @александросипенков-ц3ы

    Alex, привет, как называется музон?

  • @countrysideshowyaigrock4689

    Стэк оверфлоу... И тут поперли флешбеки

  • @Sponzhik39
    @Sponzhik39 3 роки тому +1

    Я не пойму, ты мои поисковые запросы знаешь и под них делаешь видосы?)))