G
enby!

12. Хвостовая рекурсия. Коллекции Range. foldLeft, reduce, product (Уроки программирования на Scala)

Функциональная альтернатива циклам - рекурсия. Но как избежать переполнения стека и неэффективного исполнения рекурсивных методов? Также в Scala продвинутая стандартная библиотека, в частности коллекции. В данном уроке приведу в пример коллекцию Range и методы коллекций foldLeft, reduce, product. Эффективность кода при использовании функциональных альтернатив цикла while почти такая же как и с циклом. А краткость, красота и безошибочность твоих алгоритмов вырастает в разы. 00:00 Вступление 00:40 Рекурсия. Вычисление факториала с помощью рекурсии. 04:50 Стек. Ошибка переполнения стека (StackOverflowError) 06:14 Хвостовая рекурсия. Оптимизация хвостовой рекурсии. 07:20 Вычисление факториала с помощью хвостовой рекурсии. 09:00 Как оптимизируется хвостовая рекурсия - исследование в декомпиляторе. 10:20 Преимущество рекурсии перед циклом while 10:39 Аннотация tailrec 11:43 Коллекция Range и метод foldLeft. Факториал с помощью foldLeft. 13:52 Функциональные литералы (лямбда-выражения). Синтаксический сахар. 16:16 Эффективность Range и foldLeft. Смотрим исходники. 18:39 reduce и product - реализация функции факториала с помощью этих методов. ------------------------------------------------------- Рекомендую к просмотру: 5. Функциональные литералы (лямбда-выражения):    • 5. Функции. Функциональные типы, функциона...   10. Цикл for и for-comprehension (есть также примеры с коллекцией Range):    • 10. For-Comprehensions. Цикл for, выражени...   11. Цикл while:    • 11. Цикл while и цикл do-while (Уроки Scala)   #ityoutubersru #scala #alexelkin

Смотрите также