Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Способ определения четности JavaScript

#javascript


В книге нашел способ определения четности:



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

console.log(isEven(50));
// → true
console.log(isEven(75));
// → false




То, что если n = 0 true (четное) и если 1 то false (нечетное), я понимаю. Но почему
при добавлении этой строки else return isEven(n - 2); любое число начинает определяться
как false либо true?
    


Ответы

Ответ 1



Поздравляю, Вы первый раз столкнулись с рекурсией. Для ее понимания необходимо некоторое умственное усилие. function isEven(n) { if (isNaN(n) || n < 0) // guard against bad input return; if (n == 0) return true; else if (n == 1) return false; else { console.log("cannot decide yet, call isEven again with (", n, "- 2 )"); return isEven(n - 2); } } console.log(isEven(20));

Ответ 2



Эта строка - рекурсивный вызов той же функции, а на вход ей дается исходное число - 2 Рекурсия работает до тех пор, пока исходное число не станет <=1

Комментариев нет:

Отправить комментарий