Примеры рекурсивных алгоритмов
Факториал числа.
Алгоритм Евклида.
Быстрое возведение в степень.
Числа Фибоначчи.
Курс молодого бойца по информатике (Язык Си).
cs.mipt.ru/c_intro
Факториал числа.
Алгоритм Евклида.
Быстрое возведение в степень.
Числа Фибоначчи.
Курс молодого бойца по информатике (Язык Си).
cs.mipt.ru/c_intro
Пікірлер: 50
Просто гениальное объяснение с репой. Только сейчас понял, что всегда доходим до крайнего случая и вверх по стеку!
Спасибо Вам огромное! Лучший преподаватель и профессионал!
Очень, очень доступно поясняете! Прелестно просто!
Дед зовёт деда дед зовёт деда дед зовёт деда
@phonkabuser3985
3 жыл бұрын
дед съел деда...
@Ryskatel
3 жыл бұрын
и здесь политика
@drfly4581
3 жыл бұрын
@@Ryskatel XD
Замечательное видео. Спасибо Вам.
иногда сложно,но все-таки большое спасибо
@user-iq5wx7qq4v
3 жыл бұрын
стоит пересмотреть и самому напечатать, тогда более менее уляжется инфа. Она очень крутая!
очень классное объяснение! спасибо!
Я уже ставлю лайк до просмотра Ты супер сенсе😊
Спасибо Вам!
Здравствуйте профессор, у меня возник маленький вопрос, как наша функция понимает что нужно присвоить b именно большую цифру а не малую ,чтобы считать модуль
Спасибо большое)
Все четыре случая также решаются циклическим алгоритмом. Кода будет немного больше, но эффективность за счет экономии ресурсов - в разы выше. Как насчёт алгоритмов поиска кратчайшего пути на карте, перебора дерева (посчитать размер папки на диске по размерам файлов в этой папке и всех подчиненных подпапках). А ещё можно рисовать фракталы - как визуальная рекурсия.
интересно как реализовать проверку типа вводимого данного с клавиатуры? например если на клавиатуре нажали букву f, то это должно обрабатываться отдельно и выдавать сообщение, что факториал для букв не считается
0 дизлайков вот пример хорошего учителя
@obww306
7 ай бұрын
oops
11:50 маленький хак это написать !n При n=0 (If(n==0) - звучит на языке машины: "Если True" ) Если n не = 0 (if(n==0) :"Если False") Если там Flase то ничего не происходит если True то происходит. Если при n=0 написать if(n) то для машины это (Если Flase) если же там другое число то (Если True) А знак "!" меняет True и False местами
Дед зовет деда - звучит как начало неплохой вечеринки.
Топ
Салам всем ба(н)ссейнистам
Тимофей самый крутой!
Два return в функции вычисления факториала не являются нарушением парадигмы структурного программирования? Тут получается, что функция имеет два выхода
@allex6829
Жыл бұрын
Условие отделяет return
Все классно, но как работает расчет числа Фибоначчи, не дошло до меня пока.
Вот никак не ожидал, что Вы на факториале не начнете про тернарник рассказывать! Он же тут красив (в С) и уместен семантически (в данном случае): int factorial(int n) { return n ? n * factorial(n - 1) : 1; }
@tkhirianov
5 жыл бұрын
Ну... у меня же не Code Golg. :-) Мне важно дать рекурсивные алгоритмы однородно - чтобы дошло где крайний, где рекуррентный случаи. Вообще рекурсию + тернарный можно было бы обсудить с точки зрения ленивости вычислений. Потому что, если бы Си не был "ленив", вычисления с тернарным таки привели бы к бесконечной рекурсии без крайнего случая. Ещё раз спасибо за ваши комментарии, Александр Ом. Вы у меня прямо как бета-тестер. :-)
@jasonvoorhees9310
4 жыл бұрын
красиво )))
@Cabpca
4 жыл бұрын
@@tkhirianov объясните, пожалуйста, как функция fast_power по параметрам понимает, что a нужно именно возводить в степень n, а не делить (a на n) или умножать (a на n) и др.?
@garrygaller2853
4 жыл бұрын
@@Cabpca Там все операции явно прописаны - ни о чем догадываться не нужно.
a0
Бабка за деда, внучка за бабку, жучка за внучку, кошка за жучку, мышка за кошку => так мстит сицилийская мафия
Может быть с точки зрения читабельности программы рекурсия и хороша, но для железа это задница т.к. расходуется громадное количество ресурсов памяти под стек для сохранения параметров отложенных вложенных рекурсивных функций (другими словами - засерается память(стек) адресами возврата и сохраненными другими регистрами). В цикле же, например, в случае факториала, будет использовано всего несколько байт под переменные. Соответственно и скорость выполнения будет тоже в разы отличаться.
@allex6829
Жыл бұрын
Что за бред? под стек выделено 4 мегабайта памяти, если ты умудришься и их израсходовать, то ты не программист что то явно делаешь не так, руки пообрубать будет проще.
@tanixtx5298
Жыл бұрын
@@allex6829 А теперь то же на микроконтроллере где эта память даже не во всех в мегабайтах исчисляется, умник.
@allex6829
Жыл бұрын
@@tanixtx5298 Так оставайся на своих микроконтроллерах, управляй отдельными битиками. Хэш функции, деревья, графы, красно черное дерево не для тебя.
main (int argc, char* argv[ ] )Что это? Зачем? Почему не так main ()?
@nicholasspezza9449
4 ай бұрын
формальные аргументы функции, Антошка.
Для примеров рекурсии сойдёт, но при оптимизации всё лучше сделать без рекурсии. ИМХО
@allex6829
Жыл бұрын
Где-то лучше где-то, без рекурсии бывает даже медленнее или запарное. Если бы рекурсия была не нужна, ее бы исключили, и тогда целиком компьютер проще сжечь
Включите на 0.5 будто с бодуна))
В C# тоже знак присваивания это '=' , а знак равенства '=='.
@shiftingsandsgames
Жыл бұрын
ничего себе))
@bocik2854
9 ай бұрын
Вау
Это программирование для школьников до меня только дошло! База!! АААааа!!!! Ну я и дэбил!!! Мне надо повторить нормально все. Просто очень все криво было... в башке и вообще..... Так что да... С этим СИ все равно будешь вечным школьником. Так что нормал!!!!!! Вспомнил школьную тупую шутку - ФРЕДИ ДАУН!! Посреди урока тупость сказать.... Незнаю почему так...