0

假设您想制作一个程序,一遍又一遍地打印数字 1-9

123456789123456789123456789

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

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

在我走得更远之前,这是最好的方法还是有更常见的方法?

4

5 回答 5

8

这会吗?

while(true)
{
    print("123456789");
}
于 2011-04-24T00:46:41.480 回答
1

明显的方法是:

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

为什么你想优化它超出了我的范围。输出将使计算不堪重负,以至于任何类型的优化都无关紧要。

于 2011-04-24T05:23:36.567 回答
1

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

一个“更短”的方法是这样的:

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

我所做的只是:

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

这确实是一个微优化的案例。

于 2011-04-24T00:46:31.880 回答
1

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

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

打印一个数字比打印一个字符和加法更广泛。

于 2011-04-24T01:09:06.923 回答
1

到目前为止,使用运算符的每个人%似乎都认为涉及十个值。他们也忽略了他们的逻辑有时会产生的事实0。做你想做的一种方法是:

int i = 1;
while (true) {
    print(i);
    i = (i % 9) + 1;
}
于 2011-04-24T18:47:53.273 回答