打印一系列数字优化第1部分

print a series of numbers optimization part 1

本文关键字:1部 优化 一系列 数字 打印      更新时间:2023-10-16

假设你想编写一个程序,它将一遍又一遍地打印数字1-9

123456789123456789123456789

我想最明显的方法是使用循环

int number = 1;
while(true)
{
    print(number);
    number = number + 1;
    if(number > 9)
        number = 1;
}

在我进一步讨论之前,这是最好的方法还是有更常见的方法?

这样行吗?

while(true)
{
    print("123456789");
}

到目前为止,每个使用%运算符的人似乎都认为涉及到十个值。他们也忽略了他们的逻辑有时会产生0的事实。您可以这样做:

int i = 1;
while (true) {
    print(i);
    i = (i % 9) + 1;
}

明显的方法是:

for (;;)
{
    for (int i = 1; i < 10; ++i)
    {
        print(i);
    }
}

我不明白你为什么要把它放大。输出将压倒计算,任何类型的优化都是无关紧要的。

首先,你为什么要"优化"这个?你是否在优化速度?空间?可读性还是可维护性?

更短的方式是这样的:

for (int i = 1; true; i++)
{
    print(i);
    i = (i + 1) % 10;
}

我所做的只是:

  1. 将while循环转换为for循环
  2. 转换增量+条件为increment + mod操作。

这确实是一个微优化的例子

我的答案是基于Mike的答案,但经过进一步优化:

for (int i = 1; true; i++)
{
    std::cout << ('0' + i);
    i = (i + 1) % 10;
}

打印数字比打印字符和加法要广泛得多。