Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对两个整数之间的所有数字求和_Javascript - Fatal编程技术网

Javascript 对两个整数之间的所有数字求和

Javascript 对两个整数之间的所有数字求和,javascript,Javascript,目标 给定一个数组中的两个数字,求两个整数(例如[4,2]>2+3+4=9)的和 我已经设法解决了这个问题,但我想知道是否有更优雅的解决方案(特别是使用Math.max和Math.min)-更多问题请参见下文 我的解决方案 //arrange array for lowest to highest number function order(min,max) { return min - max; } function sumAll(arr) { var list = arr.sor

目标

给定一个数组中的两个数字,求两个整数(例如[4,2]>2+3+4=9)的和

我已经设法解决了这个问题,但我想知道是否有更优雅的解决方案(特别是使用Math.max和Math.min)-更多问题请参见下文

我的解决方案

//arrange array for lowest to highest number
function order(min,max) {
  return min - max;
}


function sumAll(arr) {
  var list = arr.sort(order);
  var a = list[0]; //smallest number
  var b = list[1]; //largest number
  var c = 0;

  while (a <= b) {
    c = c + a; //add c to itself
    a += 1; // increment a by one each time
  }

  return c;
}

sumAll([10, 5]);
//将数组排列为从低到高的数字
功能顺序(最小、最大){
返回最小-最大值;
}
函数sumAll(arr){
var list=arr.sort(订单);
var a=list[0];//最小值
var b=list[1];//最大值
var c=0;
而(a最优算法

function sumAll(min, max) {
    return ((max-min)+1) * (min + max) / 2;
}

前n个整数(1到n,包括)的和由公式n(n+1)/2给出。这也是第n个三角形数

         S1 = 1 + 2 + ... + (a-1) + a + (a+1) + ... + (b-1) + b
            = b(b+1)/2
         S2 = 1 + 2 + ... + (a-1)
            = (a-1)a/2
    S1 - S2 = a + (a+1) + ... + (b-1) + b
            = (b(b+1)-a(a-1))/2
现在我们有了一个计算总和的通用公式。如果我们对大范围(例如100万到200万)求和,这将更加有效。

这里是一个使用es6的SumAll单线性递归程序解决方案。 注意:尽管最好的例子是使用上述算法。 但是,如果上述情况可以改进的话


你要做的是找到算术级数的元素之和。有一种方法不需要循环。优雅的方法是使用jquery@RiteshK我都说不出你是不是更认真了,因为你错得再错不过了。噢,天才高斯自己用javascript写的,我正要提交这个。谢谢你-看起来我需要复习一下我的算法:)当Guass 10意识到这一点时,他不是吗?@dbarnessmall(1,0)如何解决这个问题?当1+0是1时,它返回0,我将把这个答案标记为正确答案,因为我使用Math.min和Math.max问了一个例子
var array = [4, 2];
var max = Math.max.apply(Math, array); // 4
var min = Math.min.apply(Math, array); // 2

function sumSeries (smallest, largest) {
    // The formulate to sum a series of integers is
    // n * (max + min) / 2, where n is the length of the series.
    var n = (largest - smallest + 1);
    var sum = n * (smallest + largest) / 2; // note integer division

    return sum;
}

var sum = sumSeries(min, max);
console.log(sum);
const SumAll = (num, sum = 0) =>  num - 1 > 0 ? SumAll(num-1,sum += num) : sum+num;
console.log(SumAll(10));