连续递增然后递减计数?

时间:2019-02-17 18:54:46

标签: c++ algorithm

这更多是算法问题,但是使用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;
        }
    }
}

谢谢!

1 个答案:

答案 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