Slasherr
@Slasherr

Как вывести сумму чисел в промежутке через ф-цию?

Надо вывести сумму всех чисел в промежутке от 1 до 3, а потом от 20 до 220.

Как это сделать с помощю ф-ций?

Могу сделать без ф-ции, но с, что-то не понимаю как(

https://jsbin.com/junudijefu/edit?js,console
  • Вопрос задан
  • 643 просмотра
Решения вопроса 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
upd. самый лаконичный вариант без переборов:
function rangeSum(a,b) {return (b*b-a*a+a+b)/2}

console.log( rangeSum( 1, 3)); // 6
console.log( rangeSum( 20, 220)); // 24120


(старый ответ) Перебором всех значений подряд:
function rangeSum( from, to) {
  var i, sum = 0;
  for( i = from; i <= to; i++) {
    sum = sum + i;
  }
  return sum;
}

console.log( rangeSum( 1, 3)); // 6
console.log( rangeSum( 20, 220)); // 24120


Но если подумать, сумму можно вычислять без перебора:
function rangeSum2( from, to) {
  var m = to - from + 1;
  return from * m + ( m * m - m) / 2;
}
console.log( rangeSum2( 1, 3)); // 6
console.log( rangeSum2( 20, 220)); // 24120
Ответ написан
@furrya_black
Или через массив ..

let sumr= (from, to) => ((out = []) => {
	out.unshift(to);
	while(--to >= from) out.unshift(to);
	return out;
})().reduce((prev, curr) => prev + curr, 0);

console.log('1..3 ', sumr(1, 3)); // 6  (1 + 2 + 3)
console.log('1..5 ', sumr(1, 5)); // 15 (1 + 2 + 3 + 4 + 5)
console.log('3..5 ', sumr(3, 5)); // 12 (3 + 4 + 5)
console.log('20..220 ', sumr(20, 220)); // 24120
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы