Почему в консоль выводится undefined и Неверное значение?

Рейтинг: -1Ответов: 1Опубликовано: 22.02.2023

    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));

Ответы

▲ 0Принят

Поправленная функция расчета факториала

Основные моменты: Определение типа данных выненсено за пределы 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, если проверка не пройдена, вы можете возвращать любые другие значения.