我想每次增加1。我希望能够获得1,3,6,10,15,21,28,36,46 ......
首先它增加1然后是2然后是3然后是4,依此类推第四。
您可以使用变量来增加计数器
for(int counter = 0, increment = 0; counter < 100; increment++, counter += increment){
...do_something...
}
你可以试试这个:
int value=0;
for(int i=1;i<limit;i++){
value+=i;
System.out.println(value);
}
int incrementer = 1;
for ( int i = 1; i < someLength; i += incrementer )
{
cout << i << endl;
++incrementer;
}
或者如果你想尽可能少地行(但不太可读):
for ( int i = 1, inc = 1; i < 100; ++inc, i += inc )
cout << i << endl;
输出:
1
3
6
10
等等...
我假设你想要数字45而不是46。所以我想我们可以使用for循环来实现这个。
int x = 0;
int y = 1;
for(int i = 0; i <= 9; i++)
{
x += y;
cout << x << ", ";
y++;
}
我在9点停了下来,因为那是你最后用完的数字。显然我们可以继续下去。
您的问题提供了一个序列,但不正确的假设。
1,3,6,10,15,21,28,36,46-这里的增量是2,3,4,5,6,7,8,10。 10?最后一个值应该等于45吗?
通常循环看起来像:
const unsigned begin_count = 1;
const unsigned begin_increment = 2;
for(unsigned count = begin_count, incr = begin_increment; condition; count += incr, ++incr)
{
}
condition
是某种表达式,只要循环的主体被执行就必须是真的。
让我们说,这实际上是正确的,也许46是您永远不想错过的数组的结尾。或者8是你要停止添加一个并开始添加2的增量,然后应该相应地设计condition
。如果需要在执行body循环之前完成,你实际上可以在condition
内部进行增量! for()
表达式中的逗号是序列运算符,允许使用三元运算符(Function call, comma and conditional operators)。注意,for()循环的第一个“参数”不是表达式,它是一个语句,逗号的含义取决于语句的性质。在这种特殊情况下,它是两个变量的声明。
在那个阶段,当for()变得太复杂时,为了便于阅读,人们应该考虑使用while
或do while
循环。
constexpr unsigned begin_count = 1;
constexpr unsigned begin_increment = 2;
constexpr unsigned end_count = 46; // 45 + 1
for(unsigned count = begin_count, incr = begin_increment;
count < end_count;
count += incr, ++incr )
{
}