如何使用JavaScript查找1到N之间所有数字的总和

如何使用JavaScript查找1到N之间所有数字的总和,javascript,Javascript,我试图找到一种使用JavaScript计算1到N之间所有数字之和的方法。下面是我迄今为止尝试过的代码,但它似乎不起作用 function numberSum(N) { var total = 0; for(var i = 1; i <= N; i++){ total += i; } return total; } 函数编号sum(N){ var合计=0; 对于(var i=1;i您的代码很好 保持简单: var res = (n * (n+1))

我试图找到一种使用JavaScript计算1到N之间所有数字之和的方法。下面是我迄今为止尝试过的代码,但它似乎不起作用

function numberSum(N) {
  var total = 0;
    for(var i = 1; i <= N; i++){
      total += i;
    }
    return total;
}
函数编号sum(N){
var合计=0;
对于(var i=1;i您的代码很好

保持简单:

var res = (n * (n+1)) / 2;

.

您的代码运行良好。您是如何运行的

演示:

函数编号sum(N){
var合计=0;
对于(var i=1;i
函数numSum(n){
var总和=0;

对于(i=0;i更一般的递归答案

const sumRange = (min, max) => min !== max 
    ? sumRange(min, max - 1) + max 
    : 0
虽然这可能不是最小值:0最大值:n的最佳答案,但它可能是最容易阅读和理解的。

函数simpledding(num){
地点=1;
i=num;
do{place=place+=i;i--}
而(i>1);
返回地点;

}
它可以使用递归进行计算

var numberSum = (n, a = n) => n ? numberSum(n = n - 1 , a = a + n) : a

我知道这个问题已经解决了,但我想在阅读完这篇文章后快速发布一篇ES6 oneliner,并向像我这样没有扎实数学背景的人更彻底地解释它

const numSum = (n) => n * (n+1) / 2;
它之所以有效,是因为它使用了一个(这有一个很好的图像)

基本上,当你加n个数的和时,序列中就会有对。所以高斯发现你不需要循环每对数并加上它们,你只需要加上中间的对数,然后乘以总对数。这对于编程来说非常有效,因为它们不会循环通过h编程中的每个数字都会消耗您的资源

你可以通过除以n/2来计算成对数,它也给出了中间数,然后你只需加1就可以找到它的成对数


假设你得到的是1-100的和,通过应用高斯方法,你需要50(101)=5050。50是对的数量,在代码中,它由
n*
表示,101是中间对(50+51)的加法,或者在代码中
(n+1)
,最后我们用2除以中间的数字。

你的代码很好。你怎么称呼它?为什么说这个“似乎不起作用”?您是如何从函数中得到结果的?您得到的是意外结果,还是根本没有结果?输入是什么,输出是什么,预期的输出是什么?为什么它不工作?您得到了一些错误吗?@Saagar控制台中没有结果,也没有错误:(我没有投反对票,但你可能想回答OP面临的实际问题。@AndrewLyndem-也许你的函数被另一个函数或其他什么东西包装了。无论如何,请阅读javascript作用域。@Amirpovich,他的问题是它似乎不起作用,不是你能给我一个更好的公式吗?但代码不错anyways@A.J.-我们解决了两个问题:)@Amirpovich+1表示OP是一种更好的方法。我们不能省略包装
()
吗?
=>n*(n+1)/2
u可以通过调用函数来验证您的答案。请解释为什么这样可以解决OP的问题-不鼓励使用纯代码的答案。根据上面的代码,在整个迭代后打印出总和,然后调用函数来验证您的代码是否有效。
const numSum = (n) => n * (n+1) / 2;