Задача заключается в том, чтобы создать функцию, которая возвращает сумму последовательности целых чисел. Последовательность определяется 3 значениями: начало, конец, шаг. Например:
sequenceSum (2,6,2) === 12 // 2 + 4 + 6
sequenceSum (1,5,1) === 15 // 1 + 2 + 3 + 4 + 5
sequenceSum (1,5,3) === 5 // 1 + 4
Я делаю так:
function sequenceSum (a, b, c) {
let arr = [];
let sum = 0;
while (sum < b) {
arr.push(sum += c)
}
console.log(arr.reduce((prev, current) => prev + current));
}
Но проблема в том, что если число "а" отличается от "c", то результат будет ошибочный.
Могу предложить более быстрое решение. Оригинальная формула суммы последовательности от 1 до N - это N*(N+1)/2. Нам лишь нужно учесть пару моментов:
function sum(a, b, i) {
let min = Math.min(a, b) - i
let r = Math.abs(a - b)
let N = Math.trunc(r / i) + 1
return N * min + i*(N*(N+1)/2)
}
console.log(sum(1, 3, 1)) // 6
console.log(sum(3, 5, 1)) // 12
console.log(sum(2, 6, 2)) // 12
console.log(sum(3, 7, 2)) // 15
console.log(sum(1, 5, 2)) // 9
console.log(sum(1, 4, 3)) // 5
console.log(sum(1, 5, 3)) // 5
console.log(sum(1, 6, 3)) // 5
console.log(sum(1, 7, 3)) // 12
Как видите, можно обойтись без циклов и массивов. И по времени быстрее и по памяти менее напряжно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
По клику на кнопку, должна меняться прозрачность div с "ТЕКСТ1", потом должен плавно появлятся "ТЕКСТ2" в этом блоке
Решил попробовать изучить JavaScriptУ меня есть текстовое поле: с ID "login-area"