РЕКУРСИЯ В PYTHON ПОНЯТНЫМ ЯЗЫКОМ. ПРОСТРАНСТВО ИМЕН ПЕРЕМЕННЫХ.

2024 ж. 25 Сәу.
421 Рет қаралды

t.me/it_minimal Здесь разбираем сложные темы на простые части и объясняем на пальцах.
Все уроки, полезные советы, как правильно учиться, как в 2024 найти работу в IT - здесь t.me/it_minimal
ПРАКТИКА, ПОДДЕРЖКА И ПОМОЩЬ В ТГ-канале t.me/it_minimal
Подпишись!
Поддержать проект можно здесь - t.me/it_minimal/315
vk.com/it_minimal - есть и ВК

Пікірлер
  • Самое интересное у нас в ТГ - t.me/it_minimal, подпишись, там много полезного и интересного), а также там можно задать любые вопросы, если возникают сложности и получить консультацию по языку Python / Анализу данных / Работе в IT! 🖤

    @it_minimal@it_minimal12 күн бұрын
  • Аминь 😂

    @gadjia61@gadjia6112 күн бұрын
  • Офигенно объяснил!!😂❤ меня в мозгу уозникала такая хрень. Сравнить можно только с бесконечным туннелем 🤣 когда в зеркало смотришь через отражение в зеркале. Там туннель в бесконечность... И все время была проблема с ответом на вопрос, а где же конец этому, где выход??? Теперь все ясно, как день! Спасибо огромное! 😊😊😊

    @azusism@azusism11 күн бұрын
  • на самом деле рекурсия довольно часто используется, при работе с данными, когда кол-во уровней вложенности не ограничено parent -> child -> child2 -> child3 и тд Разруливать неограниченную вложенность циклами очень громоздко, и лучше конечно это делать на уровне SQL, где для рекурсии используется более удобный синтаксис

    @bzyx8087@bzyx80877 күн бұрын
    • Данные данным - рознь, как и аналитика аналитике

      @it_minimal@it_minimal6 күн бұрын
  • не забудьте что рекурсия - это про копирование области видимости. и кроме того что она "просто вызывает сама себя" - старая, уже запущенная функция, никуда не пропадает, а значит и данные, которые в ней были тоже. и вот запустив саму себя 100 раз получили 100 копий данных, которые в ней появлялись и присваивались в переменные! (каждые для своего вызова) вот почему рекурсию стоит использовать там, где данные передаются в виде аргументов, а не хранятся внутри тела. то есть функция факториала должна предыдущий результат сразу же забрасывать аргументом в вызов "самой себя", а не хранить его в переменной рядом. или по крайней мере хранить только один результат вычисления, чтобы память на одном само-вызове расходовалась по нескольку байт, а не килобайтами. самый частый случай - это написать рекурсию в каком-то классе, которая будет иметь ту же область видимости, что и весь класс. и запустив себя 100 раз она скопирует все данные-не-обьекты 100 раз, на случай если в каком-то из уровней они изменятся в некоторых языках есть понятие "ссылки", и в переменную можно положить не значение, а ссылку на уже существующее место в памяти, то есть оба имени переменной будут вести в одну и ту же коробку, где складируются результаты. в этом случае данные лежат один раз, а в переменной лежит 1 байт адреса куда она смотрит. в остальных случаях её пишут с помощью цикла while избегая создания функций. while (queue) { // или stack (стек обходит в глубину 1 -> 1.1 -> 2 -> 2.1, очередь - в ширину 1 -> 2 -> 1.1 -> 2.1 ) current = queue.shift(); // если стек - то pop() if (condition) { do_some(current); } else { queue.push(next step); // если стек - то unshift() } }

    @gzhegow@gzhegow11 күн бұрын
    • Отличный комментарий 👍

      @it_minimal@it_minimal10 күн бұрын
    • @@it_minimal помогите найти работу...

      @gzhegow@gzhegow10 күн бұрын
KZhead