В книге нашел способ определения четности:
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?
Поздравляю, Вы первый раз столкнулись с рекурсией. Для ее понимания необходимо некоторое умственное усилие.
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 Рекурсия работает до тех пор, пока исходное число не станет <=1
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости