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

  Рет қаралды 234,438

Alek OS

Alek OS

Күн бұрын

Научись создавать сайты и приложения на Python в SkillFactory: clc.to/wnk2bQ
Скидка 45% по промокоду AlekOS до 31.12.21
Рекурсия - вызов функции самой себя.
При достаточно большом объеме данных, рекурсия просто сломает вам код.
Нехватка места и нехватка времени.
Это 2 проблемы, которые мы научимся решать, оптимизируя рекурсивные алгоритмы при помощи динамического программирования и эмуляции стека.
Перед этим - важно понять, как рекурсия работает пошагово, как ее составлять и какие задачи она может решать.
Обо всем об этом - в данном видео.
✔️ Ссылки:
Стек - • КАК РАБОТАЕТ СТЕК | ОС...
Основы программирования - • КАК РАБОТАЕТ ПАМЯТЬ КО...
❤️ Поддержка канала:
Патреон - / alekos1
Юмани - yoomoney.ru/to/410011179144828
Телеграм - t.me/Alek_OS
ВК - alekos1
00:00 Введение
00:48 Рекурсия
01:52 Реклама
03:12 Палиндром
05:34 Рекурсия и стек
07:46 Факториал
09:08 Переполнение стека
09:53 Обход дерева
12:44 Виды рекурсии
14:11 Фибоначчи
17:34 Проблемы рекурсии
18:15 Динамическое программирование
25:39 Эмуляция стека

Пікірлер: 521
@konstantinsh8977
@konstantinsh8977 2 жыл бұрын
Суть видео коротко: Как ускорить код с рекурсией в 1 000 000 раз? Переписать код, не используя рекурсию.
@timt.4777
@timt.4777 Жыл бұрын
@Vladimir Apolaiko мемоизацию. Memory + Optimization = Memoization.
@user-pg8ry1tm3t
@user-pg8ry1tm3t Жыл бұрын
@@vladimirapolaiko4641вероятно, любую рекурсию можно превратить в итеративный процесс, используя стек на куче…
@hgmdev
@hgmdev Жыл бұрын
Использование кеша или своего стека замедлит твой код в сотни раз, а не ускорит
@alevadkal4179
@alevadkal4179 Жыл бұрын
​@@vladimirapolaiko4641, создаёшь стек на куче?😅
@AlexandroLavichez
@AlexandroLavichez Жыл бұрын
@@hgmdev почему?
@vladislavzainullin
@vladislavzainullin 2 жыл бұрын
Alek, вы делаете очень качественный, понятный и актуальный контент по весьма специфическим темам. Восторгу нет предела)
@TpyHaGuBaTop
@TpyHaGuBaTop Жыл бұрын
Огромное спасибо за видео, теперь гораздо лучше понимаю рекурсию. Отдельное спасибо за то, что в конце показал способ создания псевдо рекурсии. Решая задачки на литкоде часто видел, как используют стек со специально созданным типом и циклом while(stack.size > 0), и теперь понимаю что это такое 😊
@user-mj3rq8uv8b
@user-mj3rq8uv8b 2 жыл бұрын
Очень доходчиво рассказываешь, и что немало важно, наглядно. Спасибо!
@brr3534
@brr3534 2 жыл бұрын
Очень понятное объяснение - с каждым вызовом все понятнее %) Кстати, было бы круто увидеть ролик про асинк программирование, но это уже влажные.
@user-ne4bd3ry1n
@user-ne4bd3ry1n 2 жыл бұрын
а что тут такого? допустим есть нужда асинхронно выполнить некую задачу. в памяти создается так называемый асинхронный код. этот код подвешивает сам себя средствами/возможностями операционной системы (передает ей управление). После наступления нужного события в коде операционной системы для асинхронного кода (записаны данные в буфер сокета который читает асинхронный код, сработал таймер вызванный асинхронным кодом), операционная система возобновляет (передает управление) выполнение асинхронного кода. в основном теле программы проверяем в цикле коды завершения и результат асинхронного кода. Асинхронный принцип в некоторых ЯП реализован в виде корутин - в которых в явном виде идет переключение между корутинами, но не для всех задач можно использовать корутины.
@alexshpaq
@alexshpaq 2 жыл бұрын
@@user-ne4bd3ry1n как то запутанно объяснил. В асинхронном программировании поток выполнения можно сравнить с рабочим на фабрике, если процесс изготовления детали (алгоритм, он же код программы) грамотно разбить на подэтапы, то по достижению этапа, при котором участие рабочего не требуется (обжиг в печи/ожидание ответа по сети), рабочий может спокойно приступить к работе с другой деталью, новой либо уже "обоженной" в печи, а к той что сейчас в печи вернуться позже, когда этап ее обжига в печи завершится
@tirsky
@tirsky 2 жыл бұрын
Есть очень крутой ролик на эту тему kzbin.info/www/bejne/aHq6Xo17qs5nnpY
@gmadmin8529
@gmadmin8529 2 жыл бұрын
Великолепный канал. Подробно, понятно и глубоко проработанный материал. Видео с инфографикой просто прекрасно сочетаются! Продолжайте развивать канал, а мы вас поддержим. Прошу, создайте ролик о BIOS и инициализации в момент включения PC, а также о взаимодействии устройств Matheboard, CPU, VGA, RAM и т.д., boot OS и о влиянии BIOS на систему вцелом.
@DiamondSane
@DiamondSane Жыл бұрын
matherboard это какая-то питоновская библиотека?
@user-tk7nh1jw3y
@user-tk7nh1jw3y Жыл бұрын
@@DiamondSane Matheboard же
@DiamondSane
@DiamondSane Жыл бұрын
@@user-tk7nh1jw3y я хотел посмеяться над неграмотностью человека, но оказалось я сам невежественен. Чтож, бывает.
@perry9307
@perry9307 7 сағат бұрын
Ахахахах​@@DiamondSane
@Pavel_6C
@Pavel_6C 2 жыл бұрын
Лучшее объяснение рекурсии, которое я когда-либо видел! Спасибо большое)
@sckygera
@sckygera 2 жыл бұрын
Спасибо огромное за видос! Немного подтяну свои знания и пересмотрю еще раз =)
@DoSmth
@DoSmth Жыл бұрын
Одно из самых понятных объяснение алгоритма для фибоначи, спасибо)
@user-ki2ez5qy9y
@user-ki2ez5qy9y 2 жыл бұрын
*Проснитесь и пойте мистер Фримен, вас снова ждут великие уроки программирования*
@VitaliyZlobin
@VitaliyZlobin 2 жыл бұрын
Отличный труд! Благодарю) Так можно сократить проверку базового случая в 2 раза: if(n < 2) return n;
@meerable
@meerable 2 жыл бұрын
Для восприятия рекурсии, ее можно дробить. Нужно лишь воспринимать вызов функции внутри как отдельный экземпляр функции, характеризующийся значением параметров.) т.е. мы не попадаем в туже функцию - мы попадаем в ее копию)
@redhook777
@redhook777 Жыл бұрын
Это же очевидно
@JohnSmith-th9pc
@JohnSmith-th9pc Жыл бұрын
Выполняется один и тот же кусок кода, при каждом вызове создается копия локальных переменных ф-ции, копия кода не создается. Поэтому при рекурсии следует уделить внимание реентерабельности функции. Но это отдельная тема.
@sovrinfo
@sovrinfo 2 жыл бұрын
Спасибо за огромную работу, которую вы проделали. Всегда с интересом смотрю ваши выпуски
@shumiagavara2079
@shumiagavara2079 2 жыл бұрын
Круто рассказываешь, конечно, под конец чёт уснул из-за недосыпа, а так красиво чётко и понятно. Мне приятно потратить своё время на данное видео.
@irgendwer234
@irgendwer234 2 жыл бұрын
Спасибо огромное за объяснение. Очень помогло с написанием парсера языка программирования
@kiki_van_gog
@kiki_van_gog Жыл бұрын
поздравляю с 100к подписчиков)
@a.osethkin55
@a.osethkin55 2 жыл бұрын
Круто. Ждём аналогичный разбор задачи комивояжера
@strekozart
@strekozart 2 жыл бұрын
было бы круто
@alexfantast6566
@alexfantast6566 2 жыл бұрын
Довольно сложная тема простыми словами) Пришлось пересматривать несколько раз, дабы вникнуть в суть, но в итоге потихоньку догнал тему. Спасибо за этот ролик 👍
@strekozart
@strekozart 2 жыл бұрын
Спасибо за информацию! Можно такие же видео про основные алгоритмы с примерами кода и использование. Будет бомба!
@phil2964
@phil2964 2 жыл бұрын
Реально самый крутой и полезный канал на Ютубе в IT сфере!!!👍👍👍
@user-pp3cv4nz4n
@user-pp3cv4nz4n 2 жыл бұрын
Alek OS , ты делаешь офигенные ролики! Очень круто. Могу узнать где или в чем ты делаешь эти анимационные ролики?
@user-en5di5hf8k
@user-en5di5hf8k 2 жыл бұрын
Лучший! Планируешь ли ролик про быстродействие условных конструкций и как из избегать?
@user-ny9nl2ji9f
@user-ny9nl2ji9f 2 жыл бұрын
Крутое видео. Теперь нужно видео, об обходе в ширину.
@eduardmart1237
@eduardmart1237 2 жыл бұрын
Как всегда очень круто сделано!)
@DezelDanmark
@DezelDanmark Жыл бұрын
Отличный канал! Спасибо за грамотную речь и суперское видео! :)
@vadimsergeev7874
@vadimsergeev7874 2 жыл бұрын
Помню когда в первый раз столкнулся с рекурсией, дали задачу в 1С разобрать спецификацию изделия, в котором много узлов, состоящих из узлов и номенклатур входящих в них, вот тогда то я был в тупике... сейчас с улыбкой вспоминаю просматривая данное видео. Автор спасибо большое😊
@letshev
@letshev 2 жыл бұрын
вы учили 1С? за что вы так с собой поступили? )))))
@serhiis_
@serhiis_ 2 жыл бұрын
изучать 1С это еще хуже чем изучать WEB на Python. Сочувствую и вам и тем кто решил изучать WEB на Python
@dann1kid
@dann1kid Жыл бұрын
@@serhiis_ web на питоне чем плох то?
@serhiis_
@serhiis_ Жыл бұрын
@@dann1kid ну это как гвоздь забивать стеклянным стаканом. Забить та можно, но не факт что после этого руки и психика целы останутся. Хочешь веб - учи ангуляр, вуй, нод, тайпскрипт. Че нравится то и учи ну и смотри с вакансий в первую очередь. А фулстекером мальчиком на побегагках, который и микроволновку починит, ты всегда успеешь таким стать. Я чет не сомневаюсь что 1c-ники и холодильники чинят и босу джип с толкача заводят. Чем зашкварнее работа, тем зашкварнее отношение к сотрудникам, исключения редкие
@user-oq4ll5vf9g
@user-oq4ll5vf9g Жыл бұрын
Классно, очень полезно, я лайк поставил. Есть одно замечание: режет слух выражение "со стека". Данные ведь хранятся в стеке, а не на стеке. Получается, что удаляются или получаются они из стека, а не "со стека". Классный канал: всё подробно объясняется, можно легко разобраться в сложных вещах. Благодарю за труды и прошу продолжать в том же духе! ;-)
@leo_bonifacio
@leo_bonifacio 2 жыл бұрын
Спасибо большое за видео. Многое для себя нового открыл)
@Ground1981
@Ground1981 2 жыл бұрын
Ждал ! Спасибо
@sisoniykvitaliy7172
@sisoniykvitaliy7172 2 жыл бұрын
Великолепный канал. Подробно, круто и глубоко проработанный материал
@mianaviatte
@mianaviatte 2 жыл бұрын
@Alek OS, всем сердцем и разумом благодарю за это видео. Пересмотрела весь канал, дошла до рекурсии... Учу Python, тут нативка про обучение Python... потом смотрю пятую минуту видео, где представлен кусочек кода. Без задней мысли кидаю кусочек кода себе в VSC в .py файл, чтоб потестить. Бьет ошибки. Решаю как всегда, что я дура и чего-то не так написала. Начинаю дебажить... через 2,5 часа в самом конце правок случайно узнаю, что это Java. Получилось, что я перевела случайно кусок кода с Java на Python... это как с немецкого на английский, не зная немецкий... после всех стадий гнев, торг, восторг... спасибо огромное! такая шикарная практика на ровном месте! До конца вашего видео для прикола и практики переводила все примеры кода)))
@slavik8782
@slavik8782 2 жыл бұрын
Но он же код на с++ показывает...
@cordestandoff2358
@cordestandoff2358 2 жыл бұрын
Блин, я думал это си)
@borojai8569
@borojai8569 2 жыл бұрын
@@slavik8782 ребят вы чё бакланите то, в ролике используется Java почти во всех примерах, есть просто несколько моментов где код сможет выполниться в с и с++
@Evgen__B
@Evgen__B 2 жыл бұрын
@@borojai8569 и в яве, и в сях, и в плюсах, и в шарпе - во всей этой братии фигурноскобочных-точкосзапятыми языков.
@alexandrtelitsyn1207
@alexandrtelitsyn1207 2 жыл бұрын
@@cordestandoff2358 я тоже так думал
@mihfil43
@mihfil43 2 жыл бұрын
Лайк поставили, ждем продолжение ассемблера
@alexandervachenko7076
@alexandervachenko7076 2 жыл бұрын
Поддерживаю. Я на этот канал только из-за ассемблера обратил внимание.
@drKatzman
@drKatzman 2 жыл бұрын
В тред набежали подвыгоревшие мидлы.
@vadimsergeev7874
@vadimsergeev7874 2 жыл бұрын
@@Uni-Coder лучше ничего не трогать, пусть все работает как есть, даже если ты изучишь ассемблер с этого канала)))
@serhiis_
@serhiis_ 2 жыл бұрын
@You Tube SIMD писать можно только на ассемблере. На С++ и СИ нет поддержки SIMD. Поэтому многие алгоритмы, например умножение матриц/векторов и тд написано на asm через SIMD-инструкции
@serhiis_
@serhiis_ 2 жыл бұрын
@You Tube Писать свое не обязательно. Есть готовые функции в открытом доступе.
@romanstelar
@romanstelar 2 жыл бұрын
Спасибо за наглядную визуализацию! Это очень помогает пониманию
@user-ez9qe9es3f
@user-ez9qe9es3f 2 жыл бұрын
Спасибо за отличные видео! Вопрос, какю программу используете для создания "слайдов" из видео?
@qqpdhoqdhh9090
@qqpdhoqdhh9090 2 жыл бұрын
Здравствуйте! Сделайте пожалуйста видео о криптографии основах, как шифруется, как передается данные. Думаю многим было бы интересно. Да безусловно есть видео о криптографии, но именно ваша подача информации дала бы понять эту тему многим
@realfootball338
@realfootball338 2 жыл бұрын
Если не секрет в какой программе создаешь эти презентации ? Я сейчас пишу книгу но в добавок к книге хотел бы сделать пару анимированных визуальных обьяснялок.
@pinguinunique3605
@pinguinunique3605 Жыл бұрын
Спасибо за видео, всё очень понятно и доступно
@pypetype6935
@pypetype6935 2 жыл бұрын
Видео очень качественное, спасибо. Очень полезно, так как только начинаю.
@romankopylov5013
@romankopylov5013 2 жыл бұрын
Спасибо за крутой и понятный контент) Давай больше видео по алгоритмам и их вариациям )
@Shalve94
@Shalve94 2 жыл бұрын
Хорошоюее объяснение материала + отличное визуальное сопровождение
@user-yx5nj4fw2x
@user-yx5nj4fw2x Жыл бұрын
Большое спасибо за труд!
@ciklomat
@ciklomat 2 жыл бұрын
OS ты АС. Рад видеть твои методы.
@seoonlyRU
@seoonlyRU 2 жыл бұрын
вот за этой объяснение спасибо, с ходу лайк от вебмастера и гуру по сео-шмео СЕООНЛИ
@timafonalexsandr7564
@timafonalexsandr7564 Жыл бұрын
Блин 2 года назад этого не понимал. А сейчас наконец то понял. Спасибо за видео!!!
@user-yk2zc8vy6u
@user-yk2zc8vy6u 2 жыл бұрын
Спасибо за годный контент) Фибаначи лучше решать без рекурсии, сильно увеличивает время работы
@vedertt
@vedertt 2 жыл бұрын
зачетный суперовый расклад .))
@AidekovAR
@AidekovAR Жыл бұрын
Спасибо!!! Смотрю с интересом.
@user-wv7zk5iq3y
@user-wv7zk5iq3y 2 жыл бұрын
Благодаря вам заинтересовался устройством компьютера и понял что раньше вообще не понимал, как будто это был черный ящик))
@n1kst4r16
@n1kst4r16 2 жыл бұрын
Случайно попал на ролик, заинтересовал названием (которому не поверил, как оказалось и правильно) и тем, что мелькнул Python. Итог: рассказ, где-то неплохой, но прям для новичков, а весь смысл сводится к "используйте адекватный алгоритм". Единственное, что стек объясняет по ходу ролика. Но не могу сказать, что посмотрел зря, уж очень повеселила аудитория) Хммм, мне понравилось как объяснили стек, я разобрался, когда будет: * асинхронное программирование * язык ассемблера * алгоритмы и железо Насколько же это не линейно... И такое желание залезть глубже, когда не разобрались даже на поверхности. Лучше этого только те люди, которые задают вопросы по тому (!!!) что объясняется в ролике
@alexdaniel76
@alexdaniel76 2 жыл бұрын
Ура. Новое видео!
@y.shaniyev
@y.shaniyev 2 жыл бұрын
Круто объяснил рекурсию 👍
@user-ke6mg1nu1b
@user-ke6mg1nu1b Жыл бұрын
Дядь, здорово объясняешь. Тебя даже ветеринар понимает).
@whoareyouqqq
@whoareyouqqq 2 жыл бұрын
В случаях когда можно не использовать рекурсию нужно не использовать рекурсию. В большинстве языков это верно из за реализаций стека и передачи аргументов.
@alexey2
@alexey2 2 жыл бұрын
Если ты так думаешь то, я бы тебе посоветовал бросить программирование, это не твое
@crabby3936
@crabby3936 2 жыл бұрын
@@alexey2 а что не так? Всегда лучше вариант без накладных расходов. И нельзя вместо громких фраз приводить конкретные контраргументы?
@KazakovNik
@KazakovNik 2 жыл бұрын
@@crabby3936 он трепло чего от него ожидать. по теме код должен быть максимально читабельным чего рекурсия не дает. тоже самое с любимыми студентами фичами языка типа как ужать код в 1 строку. студентам не вдомек что программисты зачастую код шпилят по 13 часов и все эти выкрутасы выносят мозг не хуже GOTO который прокляли всем сообществом.
@crabby3936
@crabby3936 2 жыл бұрын
@@KazakovNik иногда рекурсивный вариант читаемее, только сегодня решал одну несложную задачку на контесте, первый вариант с рекурсией был (немного) читаемее, но падал из-за переполнения этого стека вызовов А суть претензии так и не понял, такие громкие слова тем более -- наверно правда троллинг ради троллинга, а не по этой теме претензия
@alexeypenkov9347
@alexeypenkov9347 2 жыл бұрын
@@alexey2 всегда, когда можно не использовать рекурсию - нужно не использовать рекурсию. И если ты считаешь иначе - лучше тебе бросить программирование!
@RetryMarchel
@RetryMarchel 2 жыл бұрын
Очень полезное видео. Спасибо
@user-im6qm7xg7c
@user-im6qm7xg7c Жыл бұрын
Классное видео) нашла то что искала
@kostyakryhtin5043
@kostyakryhtin5043 2 жыл бұрын
Привет Алекс, хорошее видео, отлично обьяснили как работает рекурсия под капотом, только я так и не понял как именно рекурсия ускоряет код хотя бы 2 раза. Почему та же функция полинтрома будет бежать быстрее через рекурсию, чем через обычный фор и в чем преимущество рекурсии? Название видео "ускорь код в миллион раз", но как например та же рекурсия по матрице будет бежать быстрее чем 2 фора. Наверное я что-то упустил, пожалуйста, если не сложно, приведите пример когда рекурсия будет работать гораздо быстрее другого хорошо написаного кода через for и while с теми же ifами. Как имеено рекурсия ускорит мой код хотя бы в 2 раза по сравнению с нормально написаным итеративным алгоритмом? И если вдруг не ускорит, то в чем заключается преимущество рекурсии?(считая что определенные минусы в ней есть, кроме того что зачастую она менее интуитивно понятна) Большое спасибо, надеюсь получить ответ и жду следующего видео!
@shazplay8878
@shazplay8878 2 жыл бұрын
Поздравляю с первой рекламой! Видео как всегда актуально и хорошо объяснено. Спасибо ❤️
@sprog4168
@sprog4168 2 жыл бұрын
Не знаю повлияло ли это, но под каким то из твоих видео я просил чтобы ты делал фоны тёмными, спасибо что услышал и сделал хотя бы часть фонов с кодом на чёрном фоне, так всё воспринимается намного лучше!
@IlyaKuznetsov1983
@IlyaKuznetsov1983 10 ай бұрын
Спасибо за информацию
@user-ym2iq8ym6y
@user-ym2iq8ym6y 8 ай бұрын
Подскажите, а на каком языке программирование показаны примеры?
@user-hw9dn6od7f
@user-hw9dn6od7f 2 жыл бұрын
Спасибо🙏💕
@nen777w
@nen777w 2 жыл бұрын
Можно было во втором случае (вычисление чисел Фибоначи) вместо первых двух if написать один if(1>=n) return n; Ну и вместо выделения масива на n - элементов можно было использовать только две переменные. Во избежания случая когда нам передали отрицательное n, можно использовать беззнаковый тип.
@rawil6751
@rawil6751 2 жыл бұрын
Можно, но прочитать код сходу будет сложнее. А зачем его просто так усложнять?
@rawil6751
@rawil6751 2 жыл бұрын
Это я про первое замечание.
@nikolay7658
@nikolay7658 2 жыл бұрын
Unsigned в Java?)
@serg5951
@serg5951 2 жыл бұрын
Фантастика, спасибо!
@MultiOpachki
@MultiOpachki 2 жыл бұрын
При оптимизации хвостовой рекурсии (и вообще любых произвольных хвостовых вызовов) достаточно аккуратно изменить последний кадр стека. Таким образом на стеке всегда висит ровно один кадр при любой сколь угодно большой вложенности хвостовых вызовов. Переполнения стека нет, рекурсивный алгоритм такой же быстрый, как и цикл, все счастливы. Слава TCO, которой, к слову, нет в Пайтоне!
@MultiOpachki
@MultiOpachki 2 жыл бұрын
​@@user-nq2mj6rz9q Некоторые задачи проще, быстрее и понятнее решить рекурсией. А зачем писать цикл, если компилятор сам за тебя его сделает?
@fareloz
@fareloz 2 жыл бұрын
@@user-nq2mj6rz9q Рекурсивный код может выглядеть намного проще для чтения и понимания
@ChannelCheesecake
@ChannelCheesecake 2 жыл бұрын
@@user-nq2mj6rz9q dfs lca dsu segtree и ещё 100500 алгоритмов и сд без рекурсии больно писать. Рекурсия такой же инструмент как for while do…while, никто же не спорит, что лучше for или while по причине бессмысленности спора
@Dmytro-Tsymbaliuk
@Dmytro-Tsymbaliuk 2 жыл бұрын
рекурсия медленнее цикла
@ChannelCheesecake
@ChannelCheesecake 2 жыл бұрын
@@Dmytro-Tsymbaliuk рекурсия реализует другой механизм, нужный для других задач, нежели цикл, глупо утверждать, что рекурсия хуже из-за того, что медленнее. Молоток хуже отвертки из-за того, что тяжелее?
@jaxjaximus8803
@jaxjaximus8803 2 жыл бұрын
Очень хорошие объяснения. Впервые что-то дельное о программировании, а не только ересь про заработки, и объяснено нормальным русским языком, а не тем, на чем сейчас разговаривает большинство "программистов". Даешь алгоритмы и железо! =) Да здравствует нижний уровень! ))
@olaflappalainen3109
@olaflappalainen3109 2 жыл бұрын
Не забивай голову, учи питон+джанга.
@dv3148
@dv3148 2 жыл бұрын
Материал не нов, но подача великолепна. Ps : не подскажете ли, что за музыка играет в фоне? Оч способствует процессу программирования...
@simple-things-live
@simple-things-live 9 ай бұрын
Best explanation ever 👍
@tommyhuffman7499
@tommyhuffman7499 2 жыл бұрын
Хорошое видео!
@levoradikal
@levoradikal 2 жыл бұрын
Игры отменяются, Алекос выпустил видос
@07031996zhz
@07031996zhz 2 жыл бұрын
Многое не понял, но очень интересно!
@user-pg8ry1tm3t
@user-pg8ry1tm3t Жыл бұрын
Превосходно!
@Asian-ho6jr
@Asian-ho6jr Жыл бұрын
здравствуйте! Замечательное видео. Хотел бы узнать, в какой литературе можно найти эту тему именно в вашей подаче или же это ваша наработка?
@AlekOS
@AlekOS Жыл бұрын
Моя наработка
@gorsing
@gorsing 2 жыл бұрын
спасибо очень интересно
@VasjaG
@VasjaG 2 жыл бұрын
Сразу подписка!
@PROswimming
@PROswimming 2 жыл бұрын
30:45, извините, может я глубоко заблуждаюст, но разве не segment=1 у нас должен добавится?
@lopytga
@lopytga 8 ай бұрын
В сапёре имбовая рекурсию сделал. Там надо было при нажатии на клетку с нулём открыть все ближайшие клетки. Понятно что в рекурсию входит только если значение 0. Правда пришлось ограничить рекурсию из за памяти arduino.
@kottofey1
@kottofey1 Жыл бұрын
А вот на примере того же фибоначчи, уходя всё правее будут всё бОльшие куски дерева дублироваться с теми, что есть и уже обсчитаны слева. Можно ли как-то это использовать? Например, ведь есть уже резултат прохода по ветке с четвёркой. Его можно подставить в самую правую ветку? Или я что-то недопонимаю?
@kottofey1
@kottofey1 Жыл бұрын
А, блин, не досмотрел буквально минуту и прозвучал ответ )))
@user-xw3lf2vd6d
@user-xw3lf2vd6d 2 жыл бұрын
Я не очень понял. А ускорение в миллион раз где произошло? Когда мы применили итеративный способ? Так вроде это самый первый способ которому учатся все програмисты. В чем тогда суть видео? Рассказать про рекурсии? Интересно, конечно, но тогда это дичайший кликбейт. Хотя само видео клевое.
@user-zk3uo3ti6f
@user-zk3uo3ti6f 2 жыл бұрын
Я так понял что в разделе динамическое программирование, для расчета 100 числа Фибоначчи
@user-ki2ez5qy9y
@user-ki2ez5qy9y 2 жыл бұрын
Как-то вы вот невнимательно смотрите, на примере вычисления фибоначчи от 100 через рекурсию потребуются сотни лет, чтобы обычный комп это посчитал, а избавившись от рекурсии используя динамическое программирование код выполнится за секунду+-, так что получается код ускоряется намного больше чем в миллион раз
@user-xw3lf2vd6d
@user-xw3lf2vd6d 2 жыл бұрын
@@user-ki2ez5qy9y это замечательно, но обычная итерация сотню фибоначи вычислит тоже крайне быстро, и тут еще вопрос что быстрее будет выполняться. И итеративный метод доступен даже студентам, а вот рекурсию надо еще освоить. Если рассматривать прожженого профессионала который мыслит только рекурсиями, то наверно да, такое видео напомнит ему о других методиках, а вот я любитель самоучка фибоначи стал бы считать исключительно итеративно, даже не подумал бы городить огород с рекурсиями и дин.программированием для конкретно такой задачи, вот мне и не понятно а в чем ускорение
@user-ki2ez5qy9y
@user-ki2ez5qy9y 2 жыл бұрын
@@user-xw3lf2vd6d Как я понял, идея видео в том, чтобы показать проблемы рекурсии и как их можно решить. Конечно задачу с фибоначчи необязательно решать через рекрсию, просто Фибоначчи это простой и наглядный пример, который не так сложно разобрать, к чему рекурсия может привести, вот и все. А на примере того что код ускорился в миллионы раз, проблема некоторых неосмысленных рекурсивных решений становится ещё наглядней.
@user-xw3lf2vd6d
@user-xw3lf2vd6d 2 жыл бұрын
@@user-ki2ez5qy9y Может быть. Для меня то, что вы написали совсем неочевидно, но я и не програмист. Для меня просто сама рекурсия стала понятнее.
@user-vi4ti4dj6d
@user-vi4ti4dj6d 2 жыл бұрын
Ничего из представленного в видео, кроме обхода дерева, не ускоряет ваш код код, а наоборот замедляет. Да, рекурсия описана очень хорошо, но она обычно используется для обхода деревьев, графов и некоторых других задач. Была в практике у меня еще задача для нахождения определителя матрицы, и очень хороший способ решения был через рекурсию. В остальном все задачи решаются итеративным методом намного быстрее чем рекурсивный.
@MrLolthe1stDevChannel
@MrLolthe1stDevChannel Жыл бұрын
определитель матрицы не ищется рекурсивно, это тупо и долго. его ищут методом Гаусса за n^3
@user-fd4ke5zu2i
@user-fd4ke5zu2i 2 жыл бұрын
Забавно, автор переалгорировал и начал обучать в стиле Memoization) от сложного к легкому) В общем объясняете вы толково, но ведь рекурсию начинают преподавать и познавать обычно ПОСЛЕ циклов, поэтому и используют циклы гораздо активнее. В общем видео хорошее, но это как фильм "Довод".
@MsAlexandr76
@MsAlexandr76 Жыл бұрын
В случае динамического программирования Чисел Фибоначи нельзя ли отказаться от переменной b, использовав место неё переменную result?
@Tot_samiy_pafnutiy
@Tot_samiy_pafnutiy 2 жыл бұрын
Дизайн гениальный, звуковое оформление тоже🔥, а по коду большую часть не понял😂
@letshev
@letshev 2 жыл бұрын
навеное потому что у автора лучше получается делать красиво, чем понятно? :)
@oqui7009
@oqui7009 Жыл бұрын
@@letshev просто кто-то толком не занимался программированием (да и зачем тогда смотреть подобный видеоролик?). Всё интуитивно понятно, если знать любой язык программирования и прислушиваться к автору
@letshev
@letshev Жыл бұрын
@@oqui7009 ну если у тебя есть 10-20 лет опыта программирования - тогда всё будет интуитивно понятно
@user-lc8uo1bd8u
@user-lc8uo1bd8u Жыл бұрын
@@letshev с нуля 2,5 года опыта, понял без проблем.
@OpenFrimeTVcom
@OpenFrimeTVcom 2 жыл бұрын
блин, да что за трек на фоне?) скажи пожалуйста
@run_nur
@run_nur 2 жыл бұрын
Нашёл?
@user-sj1qf8cb7h
@user-sj1qf8cb7h Жыл бұрын
Запоминание уже просчитанных вариантов - по-моему, это используется в машинах, которые играют в шахматы. Там комбинации фигур на доске, для которых уже был просчитан лучший вариант хода, хранятся в виде хеша, и, если машина видит уже знакомое расположение фигур, то не просчитывает возможные ходы заново, а достаёт готовый из памяти.
@namelessboar
@namelessboar 5 ай бұрын
На литкоде даже такие задачи есть в топике "динамическое программирование".
@dorin6880
@dorin6880 2 жыл бұрын
Спасибо!
@nerusnotfound
@nerusnotfound 2 жыл бұрын
*Лучшая инфографика по программированию которую я видел* 👍
@user-fk4fh4mk6j
@user-fk4fh4mk6j 2 жыл бұрын
20:20 на видео: А разве при объявлении кэша таким образом (без инициализации) не выйдет опасность наличия мусора в массиве? Просто я когда в школе участвовал в олимпиаде по программированию, мне снизили баллы за задачу, сказав, что переменные при объявлении обнуляются только в Windows-системах, а в Unix-системах у них неопределенное поведение и надо инициализировать.
@dalenmar
@dalenmar 2 жыл бұрын
Хотелось бы еще послушать про оптимизацию рекурсий на уровне машинного кода (в некоторых языках есть tail call optimization, позволяющий не создавать новый стек фрейм при входе в функцию рекурсии)
@n1kst4r16
@n1kst4r16 2 жыл бұрын
@@user-nq2mj6rz9q Интересно чем вы оба смотрели видео. а) tail call optimization == хвостовая рекурсия, а она описана выше б) как было сказано, некоторые компиляторы/языки умирают вырождать такие рекурсии в циклы, а значит будет совсем без вызова в) в некоторых кейсах возможна inline подстановка (даже в рекурсии, и по крайней мере в С++), так что опять же без фрейма
@user-yh4cs6xe1h
@user-yh4cs6xe1h 2 жыл бұрын
Alex, привет, как называется музон?
@user-jm4vy6is7s
@user-jm4vy6is7s 2 жыл бұрын
как всегда круто. А можешь рассказать больше про работу с векторами, я плохо учил тангенсы котангенсы, хотелось бы понять как оно работает хоть немного. Например как получить поворот угла отталкиваясь от координат и т.п.
@user-ne4bd3ry1n
@user-ne4bd3ry1n 2 жыл бұрын
разве повороты - это не матричные вычисления? канал Standalone Coder посмотрите
@Dmytro-Tsymbaliuk
@Dmytro-Tsymbaliuk 2 жыл бұрын
@@user-ne4bd3ry1n есть и кватернионы
@user-ne4bd3ry1n
@user-ne4bd3ry1n 2 жыл бұрын
@@Dmytro-Tsymbaliuk не знаю такого
@ProgMiner
@ProgMiner 2 жыл бұрын
Учитывая степень погружения в материал в видео, здесь нехватает небольшой ремарки о том, что не все языки программирования используют стек для рекурсивных функций (Haskell, и т.п.)
@viper_0097
@viper_0097 2 ай бұрын
Я использовал рекурсию, чтобы сделать блоки интерфейса, а точнее, чтобы возвращаться к ним обратно. Рекурсия прекрасно под это подходит, но напрягает, что теоритически слишком большое количество открытий окон этих может произойти переполнение стека
@dudavik7877
@dudavik7877 11 ай бұрын
Люди делятся на два типа: на тех, кто знает, что такое рекурсия, и на тех кто знает что люди делятся на два типа
@note5176
@note5176 2 жыл бұрын
Большое спасибо, очень понятно даже для меня!
@user-wq8nd9ke9r
@user-wq8nd9ke9r Жыл бұрын
9:50 а зачем в функции факториала нужно условие n == 0? Ведь всё равно, если n будет меньше двойки, вернётся единица?
@ultonic
@ultonic 2 жыл бұрын
Колоссальная работа!
@user-dk7xr7vi2p
@user-dk7xr7vi2p 2 жыл бұрын
Не понимаю К чему название ускорение кода и вызов функции. Думал услышать что то более интересное
@user-zk3uo3ti6f
@user-zk3uo3ti6f 2 жыл бұрын
Ну как бы сначала код решал задачу сильно медленнее чем в конце с применением динамического программирования, и разница довольно ощутима
@no_freaze3319
@no_freaze3319 2 жыл бұрын
Очень круто
@SL42SS
@SL42SS 2 жыл бұрын
высокая информативность и доступность видосов , продолжай творить
@quartz5555
@quartz5555 2 жыл бұрын
13:14 Всем привет, дайте пж музыку из этого момента
@run_nur
@run_nur 2 жыл бұрын
Нашёл?
одни дома // EVA mash @TweetvilleCartoon
01:00
EVA mash
Рет қаралды 6 МЛН
[Vowel]물고기는 물에서 살아야 해🐟🤣Fish have to live in the water #funny
00:53
Trágico final :(
01:00
Juan De Dios Pantoja
Рет қаралды 18 МЛН
Which one will take more 😉
00:27
Polar
Рет қаралды 78 МЛН
МЁРТВЫЙ РАЗУМ ПРОГРАММИСТА | ALEK OS
15:20
КАК УСТРОЕН EXE ФАЙЛ?
25:38
Alek OS
Рет қаралды 300 М.
КАК РАБОТАЕТ СЖАТИЕ?
27:37
Alek OS
Рет қаралды 81 М.
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
ИСТОРИЯ ОДНОГО КИЛОБАЙТА
11:26
Alek OS
Рет қаралды 805 М.
5 Simple Steps for Solving Dynamic Programming Problems
21:27
Reducible
Рет қаралды 992 М.
одни дома // EVA mash @TweetvilleCartoon
01:00
EVA mash
Рет қаралды 6 МЛН