До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подытожим.

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

Аватар пользователя Дмитрий Арнаутов
Дмитрий Арнаутов 15 октября 2020
5
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября