Функция возвращает значение Number вместо String

Задача такая: получить факториал числа и вернуть его длину. Разумеется я перевожу число в строку и после применяю метод toString, или объект String, или конкатенирую число с пустой строкой "" и применяю свойство length, то в итоге я получаю ЧИСЛО 1 в данном примере:

function count(n) {
let num = (n ? n * count(n - 1) : 1).toString().length;
return num;
}
console.log(count(5));

Особо примечательно то, что если вызвать результат факториала числа !5 = 120 к примеру через console.log или alert, без разницы - то дает то что нужно - длину 3. Пробовал разбивать строковое число в массив и выводить его длину, в итоге дает число 1.

Как преобразовать длину числа в ДАННОЙ функции?


Ответы (3 шт):

Автор решения: Алексей Соболев

попробуйте вот так

function count(n) {
  let num = (n ? n * count(n - 1) : 1);
  return num;
}
console.log(count(5).toString().length);

→ Ссылка
Автор решения: Алексей Соболев

Тогда на скорую руку вот так, код можно сократить, для наглядности, то есть тут явное понимание рекурсии

function count(n) {
  let num = (n ? n * count(n - 1) : 1);
  if (n === 5) {
    return num.toString().length;
  }
  return num
}
console.log(count(5));

→ Ссылка
Автор решения: zed

function count(num) {

    const factorial = n => (n ? n * factorial(n - 1) : 1);

    return factorial(num).toString().length;
}

console.log(count(5));

→ Ссылка