C++ 打印一系列数字优化第1部分
假设您想制作一个程序,反复打印数字1-9 1234567892345678912345678123456789 我想最明显的方法是使用循环C++ 打印一系列数字优化第1部分,c++,algorithm,optimization,addition,C++,Algorithm,Optimization,Addition,假设您想制作一个程序,反复打印数字1-9 1234567892345678912345678123456789 我想最明显的方法是使用循环 int number = 1; while(true) { print(number); number = number + 1; if(number > 9) number = 1; } 在我进一步讨论之前,这是最好的方法还是更常见的方法?首先,你为什么要“优化”这一点?你在优化速度吗?空间可读性还是可维护性
int number = 1;
while(true)
{
print(number);
number = number + 1;
if(number > 9)
number = 1;
}
在我进一步讨论之前,这是最好的方法还是更常见的方法?首先,你为什么要“优化”这一点?你在优化速度吗?空间可读性还是可维护性 “较短”的方法是:
for (int i = 1; true; i++)
{
print(i);
i = (i + 1) % 10;
}
我所做的只是:
while(true)
{
print("123456789");
}
我的答案基于Mike的答案,但经过进一步优化:
for (int i = 1; true; i++)
{
std::cout << ('0' + i);
i = (i + 1) % 10;
}
for(int i=1;true;i++)
{
std::cout最明显的方式是:
for (;;)
{
for (int i = 1; i < 10; ++i)
{
print(i);
}
}
(;;)的
{
对于(int i=1;i<10;++i)
{
印刷品(一);
}
}
我无法理解您为什么要对其进行优化。输出将压倒计算,任何类型的优化都是不相关的。到目前为止,使用%
运算符的每个人似乎都有一种印象,即涉及到十个值。他们还忽略了这样一个事实,即他们的逻辑有时会生成0
做你想做的事情的方法是:
int i = 1;
while (true) {
print(i);
i = (i % 9) + 1;
}
@迈克:是的,只要它提供OP所需的相同输出。我能看到这是“错误”的唯一情况是,如果它要求它连续地按顺序输出数字,而不是一次全部输出。那,或者如果print()有一些从代码中看不明显的副作用。@Mike:使用int
s可能也会有这个问题,除非你关闭输出缓冲。否避免了问题的目的为什么你想要一个无限循环来打印数字?常见的理论问题不要想太多这不起作用。第一次通过,循环体打印1
并将i
设置为2。然后循环增量将i
设置为3,第二次通过循环打印3
。