В книге нашел способ определения четности:
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть таблица test, в которой есть поле json с форматом данных JSONВ этом поле лежит массив [2, 3, 4, 5]
Для изображенной схемы БД необходимо составить запрос, который вернет список всех счетовДля каждого счета выбрать поля номер счета, дата...
Пытаюсь сделать парсер сайта SoundCloud на pythonПри попытке получить код страницы, что через requests, что через Selenium html-код страницы выдается некорректным