algorithm - "Flip"仅使用 +1/-1 而不使用 if/else 的简单循环的输出

标签 algorithm loops language-agnostic

<分区>

假设我有以下输出整数的基本循环:

for (var i = 0; i < 6; i++) {
    echo i;
}

/* Output: 0 1 2 3 4 5 */

是否可以使用一个简单的变量 flag 将其输出“翻转”为 5 4 3 2 1 0,其值只能是 1-1,而不使用 if/else?

主要是在 JavaScript 中寻找答案,但这应该是一个与语言无关的问题。

最佳答案

您可以将起点计算为 5 * (1 - flag)/2。您可以使用与终点条件类似的方式计算一个值,但始终循环相同的值并从循环变量计算实际值会更容易:

start = 5 * (1 - flag) / 2;
for (var i = 0; i < 6; i++) {
  echo start + i * flag;
}

关于algorithm - "Flip"仅使用 +1/-1 而不使用 if/else 的简单循环的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023168/

相关文章:

Python:While循环不会终止

python - 来自 python 2.7.6 和 3.3.3 的不同递归结果

c++ - 计数倒置归并排序算法中的移位

python - 如何在骰子游戏中的正确位置结束 try 循环?

web-services - Web 服务测试隔离 - 但何时验证 Web 服务本身?

algorithm - 通过插入一个括号最大化表达式的计算

arrays - 在小于线性时间内,在排序数组中找到重复项

algorithm - 对于有很多重复的列表,我应该使用哪种排序算法?

c# - 如何在 C# 中编写线性同余生成器 (LCG)?或者有什么众所周知的实现吗?

excel - 如果 VBA 中当前单元格为空,则获取相邻单元格的值