Алгоритъм на Codewars

проблем

Дадени са две цели числа a и b, които могат да бъдат положителни или отрицателни, намерете сбора на всички числа между включването и на тях и го върнете.

정수 ab 사이의 모든 합을 반환해라.

Ако двете числа са равни, върнете a или b.

두 숫자가 같다면, a 또는 b를 반환해라.

Решение 01

function getSum(a, b) {
  if (a === b) {
    return a;
  } else if (a < b) {
    max = b;
    min = a;
  } else {
    max = a;
    min = b;
  }
  let sum = 0;
  for (let i = min; i <= max; i++) {
    sum += i;
  }
  return sum;
}
getSum(1, 1);   // 1
getSum(-2, 4);  // 7
getSum(4, -2);  // 7

Решение 02

function getSum(a, b) {
  const max = Math.max(a, b);
  const min = Math.min(a, b);
  let sum = 0;
  for (let i = min; i <= max; i++) {
    sum += i;
  }
  return sum;
}
getSum(1, 1);   // 1
getSum(-2, 4);  // 7
getSum(4, -2);  // 7
  • Math.max(): 값이 가장 큰 수를 반환한다.
  • Math.min(): 값이 가장 작은 수를 반환한다.

Решение 03

function getSum(a, b) {
  if (a === b) return a;
  const max = Math.max(a, b);
  const min = Math.min(a, b);
  return min + getSum(min+1, max);
}
getSum(1, 1);   // 1
getSum(-2, 4);  // 7
getSum(4, -2);  // 7