25.03.2018, 00:14
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
как сумму арифметической прогрессии с определенным шагом
Подскажите, как подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for c пустым телом цикла?
|
|
25.03.2018, 12:10
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
function fn(n){
for(var s=i=1;i<n;s+=(i+=3)){};
//Или так
//for(var i=1,s=i;i<n;i+=3,s+=i){};
return s;
}
alert(fn(7));
Последний раз редактировалось Nexus, 25.03.2018 в 12:16.
|
|
25.03.2018, 14:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,125
|
|
Nexus,
function fn(n){
for(var s=i=1;i<n;s+=(i+=3)){};
//Или так
//for(var i=1,s=i;i<n;i+=3,s+=i){};
return s;
}
alert(fn(5) == fn(7) );//??? 1 + 4 == 1 + 4 + 7
|
|
25.03.2018, 14:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,125
|
|
Подскажите, как подсчитать сумму арифметической прогрессии от min до max c шагом step НЕ!!! используя цикл?
|
|
26.03.2018, 09:54
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
рони, проверку на корректность введенного числа автор и сам может дописать.
Сообщение от рони
|
Подскажите, как подсчитать сумму арифметической прогрессии от min до max c шагом step НЕ!!! используя цикл?
|
Мб. так?
function fn(min,max,step){
var n=Math.ceil((max-min)/step);
return ((2*min+step*(n-1))/2*n);
};
alert(fn(1,7,3));
|
|
26.03.2018, 10:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,125
|
|
Сообщение от Nexus
|
Мб. так?
|
да, в целом верно, n возможно надо уточнить ... нужно проверять
|
|
26.03.2018, 11:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,125
|
|
Nexus,
function fn(min,max,step){
var n=Math.ceil((max-min)/step);
return ((2*min+step*(n-1))/2*n);
};
alert(fn(1,7,2)); // 9 ??? 1 + 3 + 5 + 7 = 16
|
|
26.03.2018, 11:29
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
рони,
function fn(min,max,step){
var n=1+Math.ceil((max-min)/step);
return ((2*min+step*(n-1))/2*n);
};
alert(fn(1,10,3));//22 ~ 1+4+7+10=22
|
|
26.03.2018, 12:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,125
|
|
Nexus,
function fn(min,max,step){
var n=1+Math.ceil((max-min)/step);
return ((2*min+step*(n-1))/2*n);
};
alert(fn(9,15,5));//42 ???? 9 + 14 = 23
|
|
26.03.2018, 12:17
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
рони, так, вроде бы, правильно
function fn(min,max,step){
var n=1+Math.floor((max-min)/step);
return ((2*min+step*(n-1))/2*n);
};
alert(fn(9,15,5));
|
|
|
|