Алгоритъм на Codewars
проблем
Дадени са две цели числа a и b, които могат да бъдат положителни или отрицателни, намерете сбора на всички числа между включването и на тях и го върнете.
정수 a와 b 사이의 모든 합을 반환해라.
Ако двете числа са равни, върнете 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