IVl*_*lad 30
如果N是积极的:int sum = N*(N+1)/2;
如果N是否定的:int tempN = -N; int sum = 1 + tempN*(tempN+1)/2 * (-1);.
flo*_*rin 24
sum = N * (N + 1) / 2
Run Code Online (Sandbox Code Playgroud)
Voi*_*oid 18
您正在寻找的公式是一个在多个答案张贴到你的问题,这是一个更一般的形式等差数列/级数有差别的因素1.来自维基百科,它是以下内容:

只要m始终小于n,上述公式将处理负数.例如,要将总和从1到-2,将m设置为-2,将n设置为1,即从-2到1之和.这样做会导致:
(1 - -2 + 1) * (1 + -2) / 2 = 4 * -1 / 2 = -4 / 2 = -2.
Run Code Online (Sandbox Code Playgroud)
这是预期的结果.
只是为了完成上面的答案,这就是你如何证明公式(正整数的样本,但对于负数或任何算术套件的原理是相同的,如Void指出的那样).
只需按如下所示编写套件两次并添加数字:
1+ 2+ 3+ ... n-2+ n-1+ n = sum(1..n) : n terms from 1 to n
+ n+ n-1+ n-2+ ... 3+ 2+ 1 = sum(n..1) : the same n terms in reverse order
--------------------------------
n+1+ n+1+ n+1+ ... n+1+ n+1+ n+1 = 2 * sum(1..n) : n times n+1
n * (n+1) / 2 = sum(1..n)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6345 次 |
| 最近记录: |