生成数字0、3、5、8、10、13、15、18的序列



我想通过循环生成一系列数字。

我的系列将包含诸如0、3、5、8、10、13、15、18等数字。

我试着记住提醒,试着把2和3相加,但是行不通。

有谁能帮我生成这个系列吗

您可以使用在3和2之间切换的增量,例如

for (i = 0, inc = 3; i < 1000; i += inc, inc = 5 - inc)
{
    printf("%dn", i);
}

看起来序列从0开始,并使用3和2的增量。有几种方法可以实现这一点,但也许最简单的一种方法是以5为增量进行迭代(即3+2)并打印两个数字- position和position + 3。

下面是一些伪代码:
i = 0
REPEAT N times :
    PRINT i
    PRINT i + 3
    i += 5
  • 迭代i=0将打印03
  • 迭代i=5将打印58
  • 迭代i=10将打印1013
  • 迭代i=15将打印1518
  • …等等

我使用了标记generate-series,这是一个功能强大的PostgreSQL函数。这可能被错误地标记了(?),但碰巧会有一个优雅的解决方案:

SELECT ceil(generate_series(0, 1000, 25) / 10.0)::int;
  • generate_series()返回0, 25, 50, 75 , ...(只能产生整数)
  • 0, 2.5, 5, 7.5, ...10.0划分产生numeric数据:
  • ceil()四舍五入到您想要的结果。
  • 最终转换为整数(::int)是可选的。

SQL小提琴。

相关内容

  • 没有找到相关文章

最新更新