在JavaScript中使用循环查找连续整数的总和

Z. *_*tev 5 javascript math

我正在寻找一种方法来进行如下计算:

function sumIntegerUpTo(number) {
  return 1+2+3+...+number;
}
Run Code Online (Sandbox Code Playgroud)

如果您传递number5函数应该返回的总和1+2+3+4+5.我想知道是否有可能没有循环.

nic*_*ico 8

当然如此!

1+2+3+...+n = n * (n+1) / 2
Run Code Online (Sandbox Code Playgroud)


squ*_*art 7

function sumIntegerUpTo(number) {
    return (1 + number) * number / 2;
}
Run Code Online (Sandbox Code Playgroud)

我可以想到两个简单的方法让我记住这个公式:

  • 考虑从序列的两端添加数字:1和n,2和n-1,3和n-2等.这些小和中的每一个最终都等于n + 1.两端将在序列的中间(平均)结束,因此总共应该有n/2个.所以sum =(n + 1)*(n/2).

  • 平均值之前的数字(即(1 + n)/ 2)与之后的数量一样多,并且添加一对与该平均值等距的数字总是导致平均值的两倍,并且有n/2对因此,sum =(n + 1)/ 2*2*n/2 =(n + 1)/ 2*n.

您可以相当容易地将上述推理扩展到不同的起始编号,为您提供:sum(从a到b的数字,包括在内)=(a + b)/ 2*(b-a + 1).

  • 这错过了将这个公式归因于Carl Friedrich Gauss的界限. (2认同)