рони,
т.е. дан массив, индексы начала и конца, шаг, и надо найти сумму элементов, без цикла, рекурсии, всяких трюков с setInterval и т.д.? Синхронным кодом? Методы массивов использовать можно? |
:) смотрите пост №28 Nexus,
уберите циклы и верните сумму |
Цитата:
|
а, теперь понял.
Тут всё в кучу, в этом топике ) сумма арифметической прогрессии, в общем. По формуле все вычисляется |
Цитата:
|
Цитата:
|
Цитата:
только с шагом это не прокатит. |
сумма арифметической прогрессии
MC-XOBAHCK,
function fun(start, end, step) { step = step || (start > end ? -1 : 1); var n = (end - start) / step | 0; return (start + n * step / 2) * ++n } alert(fun(10, 1, -1)); alert(fun(1, 10, 1)); alert(fun(10, 1)); alert(fun(1, 10)); https://javascript.ru/forum/misc/731...-shagom-2.html |
рони,
не, так бы я точно не смог. Я начал просто вот так в столбик расписывать и приводить к формуле: n + (n + 1) + (n + 2) + (n + 3) + (n + 4) + (n + 5) = n + n * (1 + 2 + 3 + 4 + 5 + ........); получается в скобках выражение заходит под формулу: end * (end + 1) * 0.5, но в ней end = end - start start + start * ((end - start) * (end - start + 1) * 0.5) Это получилась формула для последовательных чисел, если не наделал ошибок. А как к ней шаг прикрутить я завис без каких либо идей. +++++++++++++ Запустил на тест и сразу вижу 2 ошибки когда n выносил как множитель в прорисовке макета формулы. n * (1 + 2 + 3 + 4 + 5 + 6 + ........); |
Ошибки разобрал. Вот такая получается функция суммы последовательных чисел если делать через арифметическую формулу:
function sum(start, end) { return start * ((end - start + 1) * (end - start + 2) * 0.5); } console.log(sum (1, 4)); // 10 !!! Функция работает НЕПРАВИЛЬНО!!! Где то ошибка в формуле, не могу понять. console.log(sum(2, 5)); |
Часовой пояс GMT +3, время: 16:14. |