Функция возвращает значение 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));
function count(num) {
const factorial = n => (n ? n * factorial(n - 1) : 1);
return factorial(num).toString().length;
}
console.log(count(5));