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

时间:2010-05-16 08:28:48

标签: javascript math

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

function sumIntegerUpTo(number) {
  return 1+2+3+...+number;
}

如果您将number作为5函数传递,则应返回1+2+3+4+5的总和。我想知道是否可以不做循环。

3 个答案:

答案 0 :(得分:8)

当然是!

1+2+3+...+n = n * (n+1) / 2

答案 1 :(得分:7)

function sumIntegerUpTo(number) {
    return (1 + number) * number / 2;
}

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

  • 考虑从序列的两端添加数字: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。

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

答案 2 :(得分:2)

或者您可以使用递归方法 - 这是多余的,因为有一个简单的公式!但是递归总会有一些很酷且神奇的东西!

function addToN(n)
{
    if(n==0) return 0;
    else return n + addToN(n-1);
}

编辑处理0!