посчитать сумму факториалов чисел

Уважаемые форумчане, помогите починить код. Условие задачи: запустить цикл перебора от 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));
→ Ссылка