这更多是算法问题,但是使用C ++语言,但是我试图绕过如何计算最多10个然后连续减少到0的想法。
0-1-2-3-4-5-6-7-8-9-10-9-8-7-6-5-4-3-2-1-0-1-2-3 -4-5-6-7-8-9-10-9-8-7-6-5-4-3-2-1 ..
我猜测这将是两个嵌套循环,或者可能是一个布尔值,以确定它是向上计数还是向下计数的方式?
下面是我的尝试,但是我不确定是否有更优化的方法来解决这个问题:
int count = 0;
int max = 10;
int min = 0;
bool incrementing = true;
while (true) {
printf("%d-", count);
if (incrementing) {
count += 1;
if (count == max) {
incrementing = false;
}
}
else {
count -= 1;
if (count == min) {
incrementing = true;
}
}
}
谢谢!
答案 0 :(得分:2)
快速n脏;一圈无限重复。
#include <stdio.h>
int main(void) {
int delta = 1;
int count = 0;
int max = 10;
int min = 0;
while(1)
{
printf("%d-",count);
count += delta;
if(count == min || count == max) delta = -delta;
}
return 0;
}
0-1-2-3-4-5-6-7-8-9-10-9-8-7-6-5-4-3-2-1-0-1-2-3-4-5-6-7-8-9-10-9-8-7-6-5-4-3-2-1-0-1-2-3-4-5-6