Почему в консоль выводится undefined и Неверное значение?
function factorial(num) {
let result = 0;
if (typeof(num) == null || String || Object || NaN) {
return console.log(`Неверное значение: ${num}`);
} else {
if (num === 1) {
return result += num;
} else {
for (let i = 0; i < num; i++) {
result = num * factorial(num - 1);
return result;
}
}
};
};
console.log(factorial(4));
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Поправленная функция расчета факториала
Основные моменты:
Определение типа данных выненсено за пределы IF.
Проверка осуществляется на тип данных number и что это не NaN(NaN имеет тип number)
Добавлена проверка на отрицательные значения
function factorial(num) {
if (typeof num !== 'number' || isNaN(num)) {// Проверяем что это число и не NaN
console.log(`Неверное значение: ${num}`);
return 0;
}
if (num < 1) return 0; // Если отрицательное
if (num === 1) return num; // Далее считать нечего, возвращаем 1
return num * factorial(num - 1); // Рекурсивно счичаем значения
};
console.log(factorial(4));
console.log(factorial(-2));
console.log(factorial('r'));
console.log(factorial(NaN));
Я добавил вывод 0, если проверка не пройдена, вы можете возвращать любые другие значения.