首页 > 解决方案 > 反正有没有迅速增加指数?

问题描述

我正在尝试编写一个 for 循环,我必须在其中以指数方式递增。我正在使用stride函数,但它不起作用。这是c ++代码,我正在尝试编写一个快速版本。

for (int m = 1; m <= high - low; m = 2*m){}

你能帮我写这段代码吗?

标签: swiftfor-loopincrement

解决方案


while-loop 可能是最简单的解决方案,但这里有一个替代方案:

for m in sequence(first: 1, next: { 2 * $0 }).prefix(while: { $0 <= high - low }) {
    print(m)
}

sequence()(懒惰地)生成序列 1, 2, 4, ...,并将prefix(while:)该序列限制在给定范围内。

这种方法的一个小优点m是它只在循环内声明(这样以后就不会被意外使用),而且它是一个常量,因此不会在循环内被无意修改。


推荐阅读