Цикл while - это, возможно, самое простое решение, но есть альтернатива:
for m in sequence(first: 1, next: { 2 * $0 }).prefix(while: { $0 <= high - low }) {
print(m)
}
sequence()
(лениво) генерирует последовательность 1, 2, 4, ... и prefix(while:)
ограничивает эту последовательность заданным диапазоном.
Небольшое преимущество этого подхода заключается в том, что m
объявляется только внутри цикла (так что его нельзя использовать позже случайно), и это константа , так что она не может быть случайно изменена внутри петли.