Почему четность минус единицы не определяется?

habrahabr.ru/post/240349 - в этой статье на хабре есть задача по написанию рекурсивной функции возвращающей четность числа..

Код собственно из их же примера такой

function isEven(n) {
  if (n == 0)
    return true;
  else if (n == 1)
    return false;
  else if (n < 0)
    return isEven(-n);
  else
    return isEven(n - 2);
}


если в качестве параметра передать -1, то возвращает undefined... Поправить-то я смог - просто отдельным кейсом условным, но причин проблемы так и не понял..
  • Вопрос задан
  • 2366 просмотров
Решения вопроса 2
console.log(-1 % 2); // => -1
console.log(-3 % 2); // => -1
Ответ написан
KorsaR-ZN
@KorsaR-ZN
А чет не пойму, зачем тут рекурсивная функция то?
Когда можно просто поделить по модулю на 2, т.е n % 2, если == 0, то четная если нет, то не четное.
А рекурсия тут пойму вообще жесть, а не решение, для числа 100, будет вызвано 51 раз. какое-то жесткое решение для определенности четности :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Glueon
@Glueon
DevOps
Код выглядит корректно. Как проверяли работу?
function isEven(n) {
  if (n == 0)
    return true;
  else if (n == 1)
    return false;
  else if (n < 0)
    return isEven(-n);
  else
    return isEven(n - 2);
}

alert( isEven('-1') )ж


Выводит false, как должен был.
Ответ написан
@Zverushko123
велосипедостроение
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы