посчитать сумму факториалов чисел
Уважаемые форумчане, помогите починить код. Условие задачи: запустить цикл перебора от a до b с шагом h. Посчитать сумму факториалов чисел которые попадаются во время перебора. Вроде числа ищет и факториал считает, а с сумой у меня не получается (sum +=factorial), не понимаю куда ее нужно вставить, и вообще правильно ли я пишу код.
function sumFactorials(start, finish, step) {
let sum = 0;
let factorial = 1;
for (let i = start; i <= finish; i += step) {
for (let j = 1; j <= i; j++) {
factorial = factorial * j;
}
}
}
sumFactorials(1, 5, 3);
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
странно, что написав весь код такую мелочь вы недореализовали
function sumFactorials(start, finish, step) {
let sum = 0;
// перебираем числа
for (let i = start; i <= finish; i += step) {
// считаем факториалы
let factorial = 1;
for (let j = 2; j <= i; j++) {
factorial *= j;
}
// считаем сумму
sum += factorial;
}
return sum;
}
sumFactorials(1, 5, 3);
ну и если требуется быстрая функция, то конечно не стоит вычислять каждый факториал с самого начала - надо к старому факториалу доумножать новую часть
или сделать даже так:
function sumFactorials(start, finish, step) {
let sum = 0;
let factorial = 1;
// считаем факториал
for (let i = 1; i < start; i++) {
factorial *= i;
}
// перебираем числа
for (let i = start; i <= finish; i ++) {
// считаем факториал
factorial *= i;
// считаем сумму
if ((i - start) % step == 0) {
sum += factorial;
}
}
return sum;
}
Автор решения: Taras
→ Ссылка
У меня получился вариант с массивом без 'if'а, но мне кажется что он более сложный.
let sum = 0;
let arr = [];
let factorial = 1;
function getSumFactorial(start, finish, step) {
// заполняем массив arr нужными числами
for (let i = start; i <= finish; i += step) {
arr.push(i);
}
// проходимся по елементам массива arr
for (let j = 0; j < arr.length; j++) {
// считаем факториал каждого числа с массива
for (let k = 1; k <= arr[j]; k++) {
factorial *= k;
}
sum = sum + factorial;
}
return sum;
}
console.log(getSumFactorial(1, 5, 3));