Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 26.07.2018, 19:42
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

рони,
т.е. дан массив, индексы начала и конца, шаг, и надо найти сумму элементов, без цикла, рекурсии, всяких трюков с setInterval и т.д.? Синхронным кодом? Методы массивов использовать можно?
Ответить с цитированием
  #32 (permalink)  
Старый 26.07.2018, 19:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

смотрите пост №28 Nexus,
уберите циклы и верните сумму
Ответить с цитированием
  #33 (permalink)  
Старый 26.07.2018, 19:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Alexandroppolus
Методы массивов использовать можно?
если это не цикл типа reduce и прочих, не знаю что может пригодится из этих методов.
Ответить с цитированием
  #34 (permalink)  
Старый 26.07.2018, 19:47
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

а, теперь понял.
Тут всё в кучу, в этом топике )
сумма арифметической прогрессии, в общем. По формуле все вычисляется
Ответить с цитированием
  #35 (permalink)  
Старый 26.07.2018, 19:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Alexandroppolus
т.е. дан массив,
нет , только начало, предел и шаг
Ответить с цитированием
  #36 (permalink)  
Старый 26.07.2018, 19:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Alexandroppolus
По формуле все вычисляется
Ответить с цитированием
  #37 (permalink)  
Старый 26.07.2018, 20:00
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от рони Посмотреть сообщение
end * (end + 1) * 0.5
только с шагом это не прокатит.
Ответить с цитированием
  #38 (permalink)  
Старый 26.07.2018, 20:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

сумма арифметической прогрессии
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
Ответить с цитированием
  #39 (permalink)  
Старый 26.07.2018, 21:02
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

рони,
не, так бы я точно не смог.

Я начал просто вот так в столбик расписывать и приводить к формуле:
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 + ........);

Последний раз редактировалось MC-XOBAHCK, 26.07.2018 в 21:19.
Ответить с цитированием
  #40 (permalink)  
Старый 26.07.2018, 21:25
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Ошибки разобрал. Вот такая получается функция суммы последовательных чисел если делать через арифметическую формулу:
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));

Последний раз редактировалось MC-XOBAHCK, 26.07.2018 в 21:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конкурс CardioQVARK - разработка алгоритма определения курильщика по кардиограмме ilyad555 Работа 2 10.03.2016 12:51
Решение задачки, нигде не могу найти. Mr_ZET Общие вопросы Javascript 6 10.11.2014 08:13
Не работает скрипт с setTimeout (гляньте опытным глазом) пжл. Benos Firefox/Mozilla 4 24.03.2012 20:18
Решение задачи с объектом math biz87 Общие вопросы Javascript 4 26.08.2011 13:50
Физические задачки на java script scvorec Общие вопросы Javascript 6 22.12.2009 00:31