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

时间:2011-04-24 00:44:12

标签: c++ algorithm optimization addition

假设你想制作一个会反复打印数字1-9的程序

123456789123456789123456789

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

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

在我继续前进之前,这是最好的方法吗?或者有更常见的方法吗?

5 个答案:

答案 0 :(得分:8)

这会吗?

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

答案 1 :(得分:1)

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

“更短”的方式就是这样:

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

我所做的只是:

  1. 将while循环转换为for 环
  2. 转换增量+ 有条件地增加+ mod 操作
  3. 这确实是微优化的一个例子。

答案 2 :(得分:1)

我的回答是基于迈克的答案,但进一步优化:

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

打印数字比打印字符和添加更加广泛。

答案 3 :(得分:1)

最明显的方式是:

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

为什么你想要改变它是超出我的。输出将压倒计算,任何类型的优化都无关紧要。

答案 4 :(得分:1)

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

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