Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpSqGn 85 of 299 menu
◀ ▶

Порождение элементов в Kotlin

Не каждая последовательность начинается с готовой коллекции. Функция generateSequence принимает первое значение и функцию, которая по текущему элементу строит следующий. Пока функция возвращает не null, цепочка может расти.

Старт с единицы и шаг плюс один дают натуральный ряд. Без ограничения длины пример не закончился бы, поэтому сразу возьмем первые пять чисел:

fun main() { val naturals = generateSequence(1) { it + 1 } .take(5) .toList() println(naturals) }

Тот же механизм подходит для геометрической прогрессии: семя умножается на два на каждом шаге:

fun main() { val powers = generateSequence(1) { it * 2 } .take(4) .toList() println(powers) }

Функция take здесь обязателен: иначе конечное действие пыталось бы пройти бесконечный ряд. Ограничение длины обрывает генерацию, когда набрано нужное число элементов.

Постройте последовательность от 10 с шагом минус три. Возьмите первые четыре значения и выведите список.

Семя 3, каждый следующий элемент - удвоение предыдущего. Возьмите первые пять значений и выведите список.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить