#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
Комментариев нет:
Отправить комментарий