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