Введение в рекурсию
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 47 из 65.
Рекурсия — это метод программирования, при котором функция вызывает саму себя для решения задачи. Представьте это как взгляд в два зеркала, расположенных друг напротив друга: каждое отражение содержит уменьшенную версию того же изображения, создавая бесконечный цикл до тех пор, пока отражения не станут слишком маленькими, чтобы их можно было увидеть.
Каждой рекурсивной функции необходимы два основных компонента для правильной работы. Базовый случай — это условие, которое останавливает рекурсию; это похоже на момент, когда зеркальные отражения становятся слишком маленькими, чтобы иметь значение. Без базового случая ваша функция будет вызывать саму себя бесконечно, что в конечном итоге приведет к аварийному завершению программы.
Рекурсивный шаг — это этап, на котором функция вызывает саму себя с измененной версией исходной задачи. При каждом вызове функции она должна работать над уменьшенной или упрощенной версией задачи, постепенно приближаясь к базовому случаю.
Представьте, что вы ищете ключи в стопке бумаг. Вы можете проверить верхний лист, и если ключей там нет, вы проделаете то же самое с оставшейся стопкой (которая теперь стала на один лист меньше). Вы будете повторять этот процесс до тех пор, пока либо не найдете ключи, либо пока не закончатся листы для проверки.
Этот подход, заключающийся в разбиении большой задачи на более мелкие, идентичные задачи, — это то, что делает рекурсию такой мощной для определенных типов задач программирования.
Шпаргалка
Рекурсия — это метод программирования, при котором функция вызывает саму себя для решения задачи путем ее разбиения на более мелкие, идентичные задачи.
Каждая рекурсивная функция нуждается в двух основных компонентах:
Базовый случай: Условие, которое останавливает рекурсию для предотвращения бесконечных циклов.
Рекурсивный шаг: Часть, где функция вызывает саму себя с измененной версией исходной задачи, постепенно приближаясь к базовому случаю.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей