Задачка простая, определить является ли число Стронг или нет. Стронг число , это такое число, где сумма факториалов составляющего его чисел равно ему же)))
145 = 1! + 4! + 5! - стронг
21 != 2! + 1! - не стронг
Но вопрос не о решении , а о том, почему в коде ниже в функции .reduce , агрегатор sum имеет строковый тип. Я понимаю что полученный после .split('') массив имеет строковый тип, но разве не произойдет преобразования к целому числу после отработки функции factorial ?
function strong(n) {
return (n).toString().split('').reduce( (sum, it, ind, arr) => +sum + factorial(it)) == n ? "STRONG!!!!" : "Not Strong !!";
}
function factorial(num) {
return num == 1 ? 1 : num * factorial(num - 1);
}