Python functions. recursion

Поділитися
Вставка
  • Опубліковано 18 сер 2020
  • Lesson topic: recursion in python. In the lesson, we will consider recursion, how a recursive function is defined and the implementation of a recursive algorithm using the factorial as an example.
    Let's compare recursion and the iterative approach to the implementation of the algorithm.
    -------------------------------------------------- -------------------------------------------------- ----------------------------------------------
    Become a channel sponsor and you will get access to exclusive bonuses. More:
    / @pythonhubstudio
    -------------------------------------------------- -------------------------------------------------- ----------------------------------------------
    Subscribe to the channel! Ask questions in the comments!
    #PythonHubStudio
    #python

КОМЕНТАРІ • 33

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

    как мана небесная, ваша видео посыпалось мне на голову. Спасибо большое

  • @user-nm8kg7zc5s
    @user-nm8kg7zc5s 3 роки тому +2

    Спасибо. Ваш урок очень помог в осознании данного понятия.

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

    Молодец.
    Главное пробовать, стараться, работа над ошибками и снова в бой.
    Молодец!!!

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

    Как приятно Вас слушать! И рекурсия уже не такой непонятной кажется))

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

    Большое спасибо. Отличное объяснение.

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

    Шикарная подача материала! Спасибо)

  • @user-os9up1kx7n
    @user-os9up1kx7n Рік тому

    Спасибо за Ваш труд.

  • @user-dn7vq7uv8p
    @user-dn7vq7uv8p 5 місяців тому +2

    Спасибо понятно обьяснил

  • @user-qi5sv2ge4p
    @user-qi5sv2ge4p Рік тому

    Очень полезно, спасибо вам )

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

    Спасибо 😘

  • @semion.shandruk
    @semion.shandruk 2 роки тому +9

    после return можно не писать else, потому что return при вызове прекращает действие цикла

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

      В данном случае else относится как и всегда и обычно к условию в if. Первый return срабатывает если выполняется условие в if. А если оно не срабатывает, то - else.

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

      Тут не сразу st == 0

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

    Бро у тебя очень крутая подача, но очень плохой звук .....

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

    Здравствуйте, Извините за беспокойство 😊
    Помогите пожалуйста 🙏
    Значение cos(x), при xизменяемом от 0.1 до 1 с шагом 0.1 можно вычислить с помощью следующего ряда:
    Y=1 - x^2/2! + x^4/4! - x^6/6! +...+x^2n/(2n)!
    Вычисления y для каждого значения x выполнять с точностью 0.00001. Результат представить в виде таблицы x, y, cos(x).

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

    Понял только одно - рекурсия редко применяется и это главное.

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

      на собеседованиях применяется))

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

    Можете пояснить на что умножается num в этом коде? Ведь там два аргумента в скобках.
    return num * some(num, st - 1)

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

      num умножается на на return результата some(num, st-1).
      num * some(num, sr-1) ==> num*num*some(num, st-1),и так далее, пока не получится:
      num*num*num*num*num*1
      То-есть num после каждого перезапуска функции становиться меньше на 1

  • @user-jt6jz6jb4h
    @user-jt6jz6jb4h 2 роки тому

    Поясните пожалуйста, почему возвращается ответ, а не 1, когда st становится равным 0? ведь if st==0: return 1

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

      Каждый цикл рекурсии что то возвращает. И накапливается 5*4*3*2*1после return 1 перемножаются и получается ответ. См. другой комментарий

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

    хлопаю стоя хе

  • @Srg.H
    @Srg.H 2 роки тому

    Поясните пожалуйста. В какую переменную записывается умножение num * some(num-1) за каждый проход?

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

      Ни в какую, в точке вызова накапливается выражение, и когда рекурсия заканчивается происходит расчет
      num*num*num....

    • @Srg.H
      @Srg.H 2 роки тому

      @@PythonHubStudio теперь понял. Спасибо!

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

    спасибаа вам класна

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

    Зачем писать else? Разве недостаточно просто написать return n * fact(n-1)

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

    Я конечно дико извиняюсь, и никоим образом не хочу никого обидеть....но. Я понимаю, после просмотра этого урока, что автор сам плавает в понятиях о рекурсии. Автор, пожалуйста, объясните ход выполнения кода (хотя бы частично) с использованием разъяснений о том, когда (в какой строке), какие данные попадаеют в стек, и когда (в какой строке) они из стека извлекаются, и после извлечения в какую строку происходит переход интерпретатора. Спасибо заранее. Тогда всем действительно станет понятно как работает рекурсия.
    P.S. потому как то, что вы назвали хвостовой рекурсией, при знании внутренней работы стека, если написано правильно не вызывает заполнения этого стека более чем на верное, рассчитанное колличество вызовов, которые оперативно используются, и своевременно отправляются/вынимаются из стека.

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

      Но тут беда в другом. Не в том, что я написал как претензию. А то, что у меня складывается ощущение, что никто до конца не понимает рекурсию. И в этом наша слабость. Я тоже её не понимаю до конца. Со стороны внутренних процессов. А поэтому ищу тех, кто расскажет до конца. Это важно! Мы никогда не будем сильными программистами, пока не будем знать это досконально.

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

      Тут беда не в том, а в том что видео показывает и объясняет рекурсию на примере кода, то есть как это реализовать. Хотите изучить стек? - запустите отладчик и будет вам информация о стеке.