-4

最近我发现像这样使用 st 的风险:

int i = 10;
int sum = 0;
while ( i-- ){
      sum = sum + i;

它实际上得到 sum = 9 + 8 + 7 + .. + 1。所以它总共缺少 10。但我更喜欢这种编码方式,它既快速又专业。有什么建议可以防止风险并且仍然有简洁的代码吗?

4

5 回答 5

5

你有一个计数器,一个停止条件和一个递减操作,所以使用一个for循环 - 它比while

int sum = 0;
for (int i = 10; i > 0; --i) {
    sum += i;
}

“专业”,简洁无风险:)

编辑:或者如果你想非常简洁:

int sum = 55;
于 2011-04-26T17:36:26.877 回答
3

至少对于这种特定类型的系列(总和来自 1..N),您只需执行N*(N+1)/2. 10*11/2 = 55。

于 2011-04-26T17:56:28.653 回答
1

后缀递增/递减可能非常讨厌。我建议不要使用它。你的例子甚至不是最糟糕的。它表现得很好:你实际上得到 sum = 9+8+7+...+1+0; 所以你会像人们想象的那样经历循环 10 次。

如评论中所述,使用 for 循环。

int sum=0;
for (int i=10;i;--i) sum+=i;

前缀运算符更容易混淆,并且在某些情况下,可以更快地编写代码。

于 2011-04-26T17:32:14.190 回答
0

使用 do-while 而不是 while。

于 2011-04-26T17:29:57.293 回答
0

不知道您所说的“风险”和“专业”编码方式是什么意思,这段代码是错误的。如果你想让它看起来和你写的“相似”

int i = 10;
int sum = i;
while ( i-- ){
      sum = sum + i;

或者

int i = 10;
int sum = 0;
do {
    sum += i;
} while (--i);
于 2011-04-26T17:30:40.163 回答