Задачи: есть две переменные "a" и "b" необходимо произвести сумму чисел от переменной "а" до переменной "b".
Пример (a =- 1, b = 2) = -1 + 0 + 1 + 2 = 2;
Мой код:
function GetSum(a, b) {
var numArray = [];
if (a < b) {
for (var s = a; s < b; s++) {
numArray.push(s);
}
}
numArray.push(b);
}
console.log(GetSum(-1, 2));
Ответ будет "2".
Так вот как все таки произвести сумму массива?
Для получения суммы на отрезке [a, b] нет необходимости заводить массив, это лишь займет лишнее время.
Операция push вставляет за O(1), так забираете n операций.
Потом еще проход по массиву n операций и n операций на суммирование.
Таким образом без массива -2*n операций.
n = b - a + 1
Выгоднее просто просуммировать их в одной переменной.
function GetSum(a, b){
var result = 0;
// if(b < a) b = [a, a = b][0]; // если бывает такой случай
for(var i = a;i <= b;i++) result += i;
return result;
}
print(GetSum(2,-1));
Вы, граждане, совсем уже чувство реальности потеряли:
function sumAllIntegers(start, end) {
return (end - start + 1) * (start + end) / 2;
}
console.log(sumAllIntegers(-1, 2));
console.log(sumAllIntegers(1, 100), "(привет от маленького Гаусса)");
в конец функции добавьте:
return numArray.reduce((a, b) => a + b, 0)
либо для старых браузеров:
return numArray.reduce(function(a, b) { return a + b; }, 0)
Чтобы получить сумма элементов массива можно воспользоваться функцией reduce
:
numArray.reduce((accumulator, currentValue) => accumulator + currentValue, 0)
То есть код из примера будет выгладить так:
function GetSum( a,b ){
var numArray=[];
if (a<b){
for (var s=a;s<b;s++){
numArray.push(s);
}
}
numArray.push(b);
return numArray.reduce((accumulator, currentValue) => accumulator + currentValue, 0)
}
GetSum(-1,2);
Также можно обойтись без массива, например:
function GetSum( a,b ){
let accumulator = 0;
for (let i=a; i<=b; i++){
accumulator += i;
}
return accumulator;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как можно вызвать Magnific Popup без клика на кнопку? Я нашел паблик методы в документации, но не могу разобраться как реализовать
Всем привет, пытаюсь отсортировать рандомно созданный массив с координатамиСортирую просто - сравниваю первые координаты
Скажите, пожалуйста, как заставить "говорить" яндекс браузер на русском? Мб у него немного другое API, потому что нативный JS speechSynthesisgetVoices() возвращает...