Скидки до 28% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Дневник студента

Insight или долгий путь к пониманию рекурсии

Время чтения статьи ~2 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Insight или долгий путь к пониманию рекурсии главное изображение

Коротко о себе. Дмитрий. 38 лет. Прошел путь от учителя истории до системного администратора в интернет провайдере.

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

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

Последнее искал и находил на Хекслете три года тому назад. Но меня отбросило назад обрушившимся информационным потоком и сложностью некоторых задач. Сдаваться - не в моем характере. Дополнительно - успел оценить плюсы увлечения программированием. Кодинг прочищает мозги. Помогает смотреть на проблему, как систему. Разложив последнюю на составные части, можно обнаружить некоторые закономерности ...

Вернувшись на Хекслет, первым делом осмотрелся. Сохранилась та ламповая атмосфера, о которой ранее столько писали люди. Вздохнул с облегчением. Число курсов значительно выросло. Поставил жирный плюс. Уууууиии! Мой любимый Python. Вернулся ... и в рекурсивном стиле споткнулся о знакомые уже грабли. Бум!

Первый шаг - попытка объяснить самому себе, что есть рекурсия. Как результат - легкая неудовлетворенность выбранным методом и отсутствием глубокого понимания механизма работы рекурсивных функций.

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

Третий шаг - вдохновляюсь вебинарами Хекслета и литературой по функциональному программированию. (это может быть любая книга по функциональному программированию). Концепция важнее инструмента.

Четвертый шаг - иногда возвращаюсь к математическим первоистокам. Смотрю на Youtube видео-лекции по математике. Это могут быть темы школьной программы или по-хорошему жуткий хардкор с Савватеевым.

Пятый шаг - const flashBack = () => "материалы Хекслета по основам программирования". База - это наше все.

Шестой шаг - под занавес рабочего дня решил пройти испытание "Добавляем цифры". Испытание в рамках курса PHP: Основы. Произвел декомпозицию. (Разделяй и властвуй). На этом этапе вынужден был остановиться. Рабочий день закончился и нужно было покидать офис. Возвращался я домой, неторопливо наслаждаясь последними деньками уходящего бабьего лета. И вдруг вот оно - озарение. Эту функцию можно реализовать через рекурсию! Включил диктофон и наговорил: "Установить предел, определить выражение в цикле, пусть функция возвращает результат выражения через саму себя". Переступил порог дома и за пять минут написал на JS решение. Здорово! Испытание на PHP: еще 5 минут и синтаксически причесал код под PHP.

Подытожим.

Внимательно читайте задания учителя. Понимание проблемы - залог успеха. Смотрите на проблему с разных сторон. Ищите методы и подходы для решения задачи. Пусть крепнет ваш пытливый ум.

Аватар пользователя Дмитрий Арнаутов
Дмитрий Арнаутов 15 октября 2020
5
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря