Примеры рекурсивных алгоритмов

Поділитися
Вставка
  • Опубліковано 12 сер 2018
  • Факториал числа.
    Алгоритм Евклида.
    Быстрое возведение в степень.
    Числа Фибоначчи.
    Курс молодого бойца по информатике (Язык Си).
    cs.mipt.ru/c_intro

КОМЕНТАРІ • 50

  • @CielLearcen
    @CielLearcen 4 роки тому +13

    Просто гениальное объяснение с репой. Только сейчас понял, что всегда доходим до крайнего случая и вверх по стеку!

  • @helentsvetkova9240
    @helentsvetkova9240 3 роки тому +17

    Дед зовёт деда дед зовёт деда дед зовёт деда

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

      дед съел деда...

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

      и здесь политика

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

      @@Ryskatel XD

  • @user-wz6uf3mt1d
    @user-wz6uf3mt1d 4 роки тому +12

    Очень, очень доступно поясняете! Прелестно просто!

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

    Спасибо Вам огромное! Лучший преподаватель и профессионал!

  • @likag.105
    @likag.105 4 роки тому +4

    Замечательное видео. Спасибо Вам.

  • @user-lo2ue9zp7k
    @user-lo2ue9zp7k 3 роки тому

    Я уже ставлю лайк до просмотра
    Ты супер сенсе😊

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

    очень классное
    объяснение! спасибо!

  • @tigrantovmasyan3078
    @tigrantovmasyan3078 4 роки тому +2

    Здравствуйте профессор, у меня возник маленький вопрос, как наша функция понимает что нужно присвоить b именно большую цифру а не малую ,чтобы считать модуль

  • @---ds7je
    @---ds7je 3 роки тому +13

    иногда сложно,но все-таки большое спасибо

    • @user-iq5wx7qq4v
      @user-iq5wx7qq4v 3 роки тому +1

      стоит пересмотреть и самому напечатать, тогда более менее уляжется инфа. Она очень крутая!

  • @Dr.aku1a
    @Dr.aku1a 2 роки тому

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

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

    интересно как реализовать проверку типа вводимого данного с клавиатуры? например если на клавиатуре нажали букву f, то это должно обрабатываться отдельно и выдавать сообщение, что факториал для букв не считается

  • @user-cu1kd8pi2r
    @user-cu1kd8pi2r 3 роки тому

    Спасибо Вам!

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

    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 местами

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

    Спасибо большое)

  • @user-in9ht6hy7d
    @user-in9ht6hy7d 3 роки тому +7

    Дед зовет деда - звучит как начало неплохой вечеринки.

  • @user-so3tm4iy7y
    @user-so3tm4iy7y 4 роки тому +8

    0 дизлайков вот пример хорошего учителя

    • @obww306
      @obww306 6 місяців тому

      oops

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

    Два return в функции вычисления факториала не являются нарушением парадигмы структурного программирования? Тут получается, что функция имеет два выхода

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

      Условие отделяет return

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

    Салам всем ба(н)ссейнистам

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

    Все классно, но как работает расчет числа Фибоначчи, не дошло до меня пока.

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

    Топ

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

    Тимофей самый крутой!

  • @pro100SOm
    @pro100SOm 5 років тому +4

    Вот никак не ожидал, что Вы на факториале не начнете про тернарник рассказывать! Он же тут красив (в С) и уместен семантически (в данном случае):
    int factorial(int n) {
    return n ? n * factorial(n - 1) : 1;
    }

    • @tkhirianov
      @tkhirianov  5 років тому +20

      Ну... у меня же не Code Golg. :-)
      Мне важно дать рекурсивные алгоритмы однородно - чтобы дошло где крайний, где рекуррентный случаи.
      Вообще рекурсию + тернарный можно было бы обсудить с точки зрения ленивости вычислений. Потому что, если бы Си не был "ленив", вычисления с тернарным таки привели бы к бесконечной рекурсии без крайнего случая.
      Ещё раз спасибо за ваши комментарии, Александр Ом. Вы у меня прямо как бета-тестер. :-)

    • @jasonvoorhees9310
      @jasonvoorhees9310 4 роки тому

      красиво )))

    • @Cabpca
      @Cabpca 4 роки тому

      @@tkhirianov объясните, пожалуйста, как функция fast_power по параметрам понимает, что a нужно именно возводить в степень n, а не делить (a на n) или умножать (a на n) и др.?

    • @garrygaller2853
      @garrygaller2853 4 роки тому

      @@Cabpca Там все операции явно прописаны - ни о чем догадываться не нужно.

  • @user-mj3ti8oy6s
    @user-mj3ti8oy6s 4 роки тому

    a0

  • @user-vt2uc2ew6p
    @user-vt2uc2ew6p 7 місяців тому

    main (int argc, char* argv[ ] )Что это? Зачем? Почему не так main ()?

    • @nicholasspezza9449
      @nicholasspezza9449 4 місяці тому +1

      формальные аргументы функции, Антошка.

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

    Для примеров рекурсии сойдёт, но при оптимизации всё лучше сделать без рекурсии. ИМХО

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

      Где-то лучше где-то, без рекурсии бывает даже медленнее или запарное. Если бы рекурсия была не нужна, ее бы исключили, и тогда целиком компьютер проще сжечь

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

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

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

      Что за бред? под стек выделено 4 мегабайта памяти, если ты умудришься и их израсходовать, то ты не программист что то явно делаешь не так, руки пообрубать будет проще.

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

      @@allex6829 А теперь то же на микроконтроллере где эта память даже не во всех в мегабайтах исчисляется, умник.

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

      @@tanixtx5298 Так оставайся на своих микроконтроллерах, управляй отдельными битиками. Хэш функции, деревья, графы, красно черное дерево не для тебя.

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

    В C# тоже знак присваивания это '=' , а знак равенства '=='.

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

    Включите на 0.5 будто с бодуна))

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

    Бабка за деда, внучка за бабку, жучка за внучку, кошка за жучку, мышка за кошку => так мстит сицилийская мафия

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

    Это программирование для школьников до меня только дошло! База!! АААааа!!!! Ну я и дэбил!!! Мне надо повторить нормально все. Просто очень все криво было... в башке и вообще..... Так что да... С этим СИ все равно будешь вечным школьником. Так что нормал!!!!!!
    Вспомнил школьную тупую шутку - ФРЕДИ ДАУН!! Посреди урока тупость сказать.... Незнаю почему так...