c ++以对数方式增加for循环增量
c++ Increasing for loop increment logarithmically
我想像这样遍历整数:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, ..., 100, 200, ..., 1000, 2000, ...
我有执行此操作的代码(如下所示),但它很麻烦,而且通常没有编程来处理不同的停止限制:
int MAX = 10000;
for (int i = 1; i <= MAX; i++) {
cout << i << endl;
if (i >= 10 && i < 100) {
i += 9;
}
else if (i >= 100 && i < 1000) {
i+= 99;
}
else if (i >= 1000 && i < 10000) {
i += 999;
}
}
如您所见,这是如前所述指定的情况 - 所以我想知道一种以更通用的方式对此进行编码的方法,因为我的要求 MAX 将是 10 的数量级^9 所以使用上面的代码太不切实际了。
试试这个代码。比较笼统:
int MAX = 1000000;
for (int i = 1, increment = 1, counter = 1; i <= MAX; i += increment) {
cout << i << endl;
if (counter == 10) {
increment *= 10;
counter = 1;
}
++counter;
}
我想像这样遍历整数:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, ..., 100, 200, ..., 1000, 2000, ...
我有执行此操作的代码(如下所示),但它很麻烦,而且通常没有编程来处理不同的停止限制:
int MAX = 10000;
for (int i = 1; i <= MAX; i++) {
cout << i << endl;
if (i >= 10 && i < 100) {
i += 9;
}
else if (i >= 100 && i < 1000) {
i+= 99;
}
else if (i >= 1000 && i < 10000) {
i += 999;
}
}
如您所见,这是如前所述指定的情况 - 所以我想知道一种以更通用的方式对此进行编码的方法,因为我的要求 MAX 将是 10 的数量级^9 所以使用上面的代码太不切实际了。
试试这个代码。比较笼统:
int MAX = 1000000;
for (int i = 1, increment = 1, counter = 1; i <= MAX; i += increment) {
cout << i << endl;
if (counter == 10) {
increment *= 10;
counter = 1;
}
++counter;
}