swift - 反正有没有迅速增加指数?
问题描述
我正在尝试编写一个 for 循环,我必须在其中以指数方式递增。我正在使用stride
函数,但它不起作用。这是c ++代码,我正在尝试编写一个快速版本。
for (int m = 1; m <= high - low; m = 2*m){}
你能帮我写这段代码吗?
解决方案
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
是它只在循环内声明(这样以后就不会被意外使用),而且它是一个常量,因此不会在循环内被无意修改。
推荐阅读
- r - 如何获得二进制矩阵的所有唯一排列及其在R中的等级
- mongodb - 在 MongoTemplate 聚合中按 id 列表过滤对象列表
- typescript - 如何修复 ts-node 运行问题
- python - 如何使用熊猫将某些单词过滤到新列中?
- python - 尝试导入 python 文件时出现 ModuleNotFoundError,该文件本身会在同一目录中导入文件
- javascript - Discord.js v12 Love Affinity 命令 - 不能提及自己
- java - Java 密码创建 - 必须具有某些参数
- git - Git - Azure DevOps“错误:RPC 失败;HTTP 413 curl 22 请求的 URL 返回错误:413”
- linux - Docker-Compose 只查看 /opt/redash
- sql - INSTEAD OF TRIGGER CREATION 的语法错误 - PostgresSQL