Информатика на Python, лекция 6, ФБВТ МФТИ (2023)

Лекция 6: Рекурсия. Рекуррентные быстрые сортировки.
Курс информатики для 1-го курса ФБВТ МФТИ (2023).
Таймкоды:
00:00 Что такое рекурсия?
07:21 Декомпозиция, вызов функций
28:41 Функция вызывает саму себя
35:01 Рекурсию можно заменить циклом и наоборот
44:45 Возведение в степень
54:35 Сортировка Тони Хоара
01:03:40 Сортировка слиянием
Плейлист с лекциями 1-го курса ФБВТ МФТИ (2023): • 2023 ФБВТ Информатика ...
Снял и смонтировал видео: ​⁠​⁠ youtube.com/@antonoreshkin?si...

Пікірлер: 21

  • @UHDking
    @UHDking6 ай бұрын

    Got my like. This guy is a legend on Python for people that understand russian. He should me making at least 100,000 USD per year because he made so many talented people later on but there is no individual that will understand it. Good job and one of my fav from Eastern Europe in terms of proper software development learning classes. people with kids will not be very talented - if from the audience somebody decided to bring babies...

  • @tkhirianov

    @tkhirianov

    6 ай бұрын

    Thanks for such a gratitude. I will try my best.

  • @maximfdrv
    @maximfdrv6 ай бұрын

    Супер лекция. Учился в США на СS рассказывали тоже самое. Но там quicksort и mergesort разбирали отдельно и глубже, а в теме про рекурсию уже показывали как это работает рекурентно. Рекурсию в программировании применяют очень редко. Но это основы а их надо знать. P.S. малой просто красавчик!!!

  • @PLCAutomations
    @PLCAutomations6 ай бұрын

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

  • @user-bl4zv2gt9z
    @user-bl4zv2gt9z6 ай бұрын

    Спасибо Тимофей. Столько времени потерял. Надо было учиться раньше. А я сейчас в 44 года начал интересоваться програмированием.

  • @MrJaberz
    @MrJaberz6 ай бұрын

    Лайк по умолчанию. Все должны смотреть эти лекции. Спасибо автору.

  • @alexm2542
    @alexm25426 ай бұрын

    Подростает молодое поколение питонистов прям на лекциях, растет замена Фёдоровичу 😅 как всегда прекрасная лекция!

  • @iliameliia
    @iliameliia6 ай бұрын

    Спасибо большое, Тимофей Фёдорович!

  • @soderfraga
    @soderfraga6 ай бұрын

    Спасибо за видео! Прекрасные лекции!

  • @iritaka
    @iritakaАй бұрын

    таймкоды: исполняемый процесс, рекурсия, сортировка Тони Хоара (QuickSort быстрая), сортировка слиянием (MergeSort) 0:00 вступление 0:17 Рекурсия - это функция, которая вызывает саму себя 1:53 особенность рекурсии: если ставится задача, на которой будет уровень вложенности 3 ( n = 3), надо сделать вначале эту задачу с уровнем вложенности 2 (n = 2), для этого надо (как подзадача), сделать задачу уровня вложенности 1 (n = 1) 3:18 рекурсия - это способ решения задачи через сведение её к подзадаче (ам), аналогичной (ых) исходной, но проще 4:34 декомпозиция 6:27 декомпозиция и композиция, как анализ и синтез 7:03 декомпозиция явл методом понижения сложности разбиением на подзадачи 7:20 как выстроены вызовы функций. Когда программа разложена на подпрограммы (функции): 1) есть функция main (главный модуль) 2) функции A, B, C, D 8:00 передача хода не распределяясь на нити 8:21 вычислительный процесс (запущен Пайтон-скрипт) 9:03 когда вызывается функция A(), в Питоне создаётся пространство имён для её локальных переменных (параметров,...) 9:41 исполняемый файл (exe.) 10:25 однопоточное исполнение 12:00 вычислительный процесс общий ( пул ресурсов) 12:25 в рамках внутренних (интерпретатор) каждая функция получает своё пространство имён 13:28 при возврате из функции её пространство имён уничтожается 13:57 если функция возвращала значение 14:18 после завершения работы последней функции D() 15:20 пример вызовов функций 15:50 обязательно должен произойти возврат назад в функцию, которая вызвала 16:27 в Питоне программным образом поддерживается стэк вызовов CALL STACK (стопка) 16:45 Traceback (обратный след) ошибки 18:16 работа функции main - не нужно запоминать куда возвращаться 18:35 вызов функции B(), надо запомнить куда возвращаться 19:36 работа стэка вызовов. В мэйне он пуст, но когда вызываем функцию - она попадает в него (это верхушка стека) 22:30 вызов функции из разных мест кода, и из разных функций. Получается некий граф зависимостей функций друг от друга 24:14 этот механизм складывания в стэк адресов возврата называется синхронный вызов 24:55 асинхронный вызов 27:57 однопоточное программирование, синхронные вызовы 28:43 Рекурсия. Внутри функции вызов самой этой функции 29:18 код на доске формально рекурсия, но бесконечная 29:38 когда мы сводим задачу к подзадаче, её сложность должна Убывать 32:43 переполнение стека. Уязвимость vulnerability 35:02 у любой задачи, у которой есть рекурентный способ решения, есть нерекурентный способ её решения. Цикл и рекурсия - взаимозаменяемые вещи. Есть ограничение глубины рекурсии depth of recursion. Можно поднять: import sys sys.setrecursionlimit() 35:46 задача, просуммировать ряд чисел с клавиатуры 36:52 код на доске сумма чисел через цикл 39:50 код на доске сумма чисел через рекурсию ( без крайнего случая!). Нужен еще крайний случай 40:16 решение без рекурсии более экономное 42:32 код на доске сумма чисел через рекурсию 32:52 сказка репка как пример рекурсии 43:27 задачи для рекурсии - числа Фибоначчи, факториал, их можно решить с помощью рекурсии, но совсем не стоит (не рационально) 44:37 задача Возведение В Степень с помощью рекурсии 46:27 эту задачу можно решить динамическим программированием 47:16 фишка рекурсии в том, что нужно разделять 1) крайний и 2) рекурентный случай 49:00 код на доске решение задачи возведения в степень 49:48 другой способ решения Быстрое Возведения В Степень: разные обработки чётных n и нечётных 51:45 код (оптимизированный) на доске решение задачи возведения в степень 52:19 выполнение рекурсивной функции происходит в 3 этапа: I прямой ход рекурсии по пути углубления (выполняются параметры функции, если они требуют вычисления, и все строчки кода в функции ДО её вызова внутри самой себя ) -> II завершение разворачивания рекурсивных случаев крайним случаем (return) -> III и обратный ход рекурсии (доделывание до конца, сворачивание: выполняются строчки кода в функции ПОСЛЕ её вызова в самой себе 54:15 рекуррентные быстрые сортировки: сортировка Тони Хоара (QuickSort быстрая) и сортировка слиянием (MergeSort) 55:07 идея сортировки Тони Хоара 1:01:40 код на доске сортировки Тони Хоара 1:01:52 асимптотика наихудшего случая квадратична O(N**2), а среднестатистически W(NlogN) 1:03:02 сортировка слиянием O(NlogN) 1:08:59 код на доске сортировка слиянием 1:09:37 ценность рекурсии, при наличии параллельности, возможность добиться O(N) Разъяснение тем лекции (читать, скачать бесплатно в формате docx) в группе ВК "Основы Программирования (кодинг) на Python" (osnovyprogrammirovania)

  • @jiper100
    @jiper1006 ай бұрын

    Такие лекции я люблю.

  • @_MrBrooks
    @_MrBrooks6 ай бұрын

    Тимофей Фёдорович нарезкой видео показал работу команды GOTO. А Ваня исполнил роль сборщика мусора.

  • @j82cerberS
    @j82cerberS6 ай бұрын

    Рекурсия это: У попа была собака, Он ее любил. Она съела кусок мяса - Он ее убил. И в землю закопал. И надпись написал: «У попа бала собака, Он ее любил…»

  • @ezo2487

    @ezo2487

    6 ай бұрын

    Ведьмак 3?

  • @maksimluzin1121

    @maksimluzin1121

    6 ай бұрын

    ... а в какой-то момент произошёл exception case (особый случай, исключение): собака загрызла попа, и всё - всё сломалось! 😉🥲

  • @user-ve4ve1vz3b

    @user-ve4ve1vz3b

    4 ай бұрын

    Рекурсия это копрофилия) Вернее копрофилия это рекурсия. Один человек через такой подход решил показывать это слово во время игры в крокодила

  • @shadoyy88
    @shadoyy886 ай бұрын

    Про Квиксорт прям хорошо

  • @IvanZaitsevv1
    @IvanZaitsevv16 ай бұрын

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

  • @legohistory8039
    @legohistory80396 ай бұрын

    👍

  • @user-bl4zv2gt9z
    @user-bl4zv2gt9z6 ай бұрын

    Тимофей Федорович. У меня 9 классов образование. С чего вы посоветуете начать обучение. Просто сразу МФТИ Мне многое не понятно о чем речь идет. Некоторые обозначения символов.Мне сама логика програмирования интересна. Как работает механизм этой науки. Я сам со Ставропольского края.

  • @user-cd6oz6xi5t
    @user-cd6oz6xi5t5 ай бұрын

    В конце лекции пришел "сборщик мусора" python и начал удалять код программы.))