Задача: "Рекурсия".
Ноль чётный. Единица нечётная. У любого числа N чётность такая же, как у N-2.Напишите рекурсивную функцию isEven согласно этим правилам. Она должна принимать число и возвращать булевское значение. Потестируйте её на 50 и 75. Попробуйте задать ей -1. Почему она ведёт себя таким образом? Можно ли её как-то исправить?
console.log(isEven(50));
// → true
console.log(isEven(75));
// → false
console.log(isEven(-1));
// → ??
Ноль чётный. Единица нечётная. У любого числа N чётность такая же, как у N-2.Напишите рекурсивную функцию isEven согласно этим правилам. Она должна принимать число и возвращать булевское значение. Потестируйте её на 50 и 75. Попробуйте задать ей -1. Почему она ведёт себя таким образом? Можно ли её как-то исправить?
console.log(isEven(50));
// → true
console.log(isEven(75));
// → false
console.log(isEven(-1));
// → ??
Хай! Сегодня мы ищем разницу в возрасте)
Используя набор данных из примера, подсчитайте среднюю разницу в возрасте между матерями и их детьми (это возраст матери во время появления ребёнка). Можно использовать функцию average, приведённую в главе.
Обратите внимание – не все матери, упомянутые в наборе, присутствуют в нём. Здесь может пригодиться объект byName, который упрощает процедуру поиска объекта человека по имени.
function average(array) {
function plus(a, b) { return a + b; }
return array.reduce(plus) / array.length;
}
var byName = {};
ancestry.forEach(function(person) {
byName[person.name] = person;
});
// Ваш код
// → 31.2
Используя набор данных из примера, подсчитайте среднюю разницу в возрасте между матерями и их детьми (это возраст матери во время появления ребёнка). Можно использовать функцию average, приведённую в главе.
Обратите внимание – не все матери, упомянутые в наборе, присутствуют в нём. Здесь может пригодиться объект byName, который упрощает процедуру поиска объекта человека по имени.
function average(array) {
function plus(a, b) { return a + b; }
return array.reduce(plus) / array.length;
}
var byName = {};
ancestry.forEach(function(person) {
byName[person.name] = person;
});
// Ваш код
// → 31.2
Новый год наступает на пятки и праздничное настроение уже манит! А меж тем декабрь не отпускает своей суетой и задачами...
А ты все успел в этом году?
Помогаем разложить по полкам дела и расставить правильные приоритеты:
ТАЙМ-МЕНЕДЖМЕНТ И КАК ВСЕ УСПЕТЬ
- - читать статью.
А ты все успел в этом году?
Помогаем разложить по полкам дела и расставить правильные приоритеты:
ТАЙМ-МЕНЕДЖМЕНТ И КАК ВСЕ УСПЕТЬ
- - читать статью.
Привет, друг!
Мы готовим для тебя новый стрим на нашем YouTube канале:
"Как стартовать в IT".
🕖 28.12.2022 в 19:00 по МСК будем разбирать самые наболевшие темы:
✔️ нужно ли идти в IT в 2023,
✔️ рынок труда в IT — есть ли спрос,
✔️ что должен знать junior (чек-лист по базовым знаниям),
✔️ сколько учиться чтобы выйти на работу,
✔️ как не перегореть во время обучения,
✔️ в 30 не поздно? а в 14 не рано идти учиться,
✔️ страхи перед обучением: найду ли работу, будет ли сложно, как совмещать работу и учебу,
✔️ ошибки в обучении (личный опыт спикеров),
✔️ тайм-менеджмент студента, и т.д.
Наши спикеры помогут с тайм-менеджментом, расскажут про ошибки при обучении и как их избежать.
Приходи, будем беседовать беседы и раздавать советы 😉 -- "Как стартовать в IT".
*задать свой вопрос для стрима можно тут
Мы готовим для тебя новый стрим на нашем YouTube канале:
"Как стартовать в IT".
🕖 28.12.2022 в 19:00 по МСК будем разбирать самые наболевшие темы:
✔️ нужно ли идти в IT в 2023,
✔️ рынок труда в IT — есть ли спрос,
✔️ что должен знать junior (чек-лист по базовым знаниям),
✔️ сколько учиться чтобы выйти на работу,
✔️ как не перегореть во время обучения,
✔️ в 30 не поздно? а в 14 не рано идти учиться,
✔️ страхи перед обучением: найду ли работу, будет ли сложно, как совмещать работу и учебу,
✔️ ошибки в обучении (личный опыт спикеров),
✔️ тайм-менеджмент студента, и т.д.
Наши спикеры помогут с тайм-менеджментом, расскажут про ошибки при обучении и как их избежать.
Приходи, будем беседовать беседы и раздавать советы 😉 -- "Как стартовать в IT".
*задать свой вопрос для стрима можно тут
Друзья, напоминаем, что сегодня в 19:00 по МСК у нас будет стрим на YouTube — "Как стартовать в IT".
Приходи, подписывайся!
Приходи, подписывайся!
Атенсион!
Уже прямо сейчас ровно в 19:00 по МСК у нас будет стрим на YouTube — "Как стартовать в IT".
Наши спикеры:
Марк Джовиев - full-stack разработчик с опытом 20+ лет в индустрии IT. Автор курса "JavaScript с нуля".
Дмитрий Муравьев - senior front end разработчик, архитектор и team lead с опытом более 10 лет в разработке. соАвтор курса.
Готовь чай, кофе и свои вопросы — будем отвечать!
Уже прямо сейчас ровно в 19:00 по МСК у нас будет стрим на YouTube — "Как стартовать в IT".
Наши спикеры:
Марк Джовиев - full-stack разработчик с опытом 20+ лет в индустрии IT. Автор курса "JavaScript с нуля".
Дмитрий Муравьев - senior front end разработчик, архитектор и team lead с опытом более 10 лет в разработке. соАвтор курса.
Готовь чай, кофе и свои вопросы — будем отвечать!
А ты уже на стриме?) Мы тут ждем тебя -- ссылка на вебинар.
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
Хай! Задача:
Выйдите из цикла, изменив только две отмеченные строки. Результат в консоли сейчас останавливается на 9 9. Должен на 5 4.
for (let i = 0; i < 10; i++) { //! Эту строку можно изменить
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) {
//! Эту строку можно изменить
}
console.log(i, j);
}
}
Выйдите из цикла, изменив только две отмеченные строки. Результат в консоли сейчас останавливается на 9 9. Должен на 5 4.
for (let i = 0; i < 10; i++) { //! Эту строку можно изменить
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) {
//! Эту строку можно изменить
}
console.log(i, j);
}
}
Рекурсия – это приём программирования, полезный в ситуациях, когда задача может быть естественно разделена на несколько аналогичных, но более простых задач. Или когда задача может быть упрощена до несложных действий плюс простой вариант той же задачи. Или, как мы скоро увидим, для работы с определёнными структурами данных.
Давай решим задачу по рекурсии:
Напишите функцию sumTo(n), которая вычисляет сумму чисел 1 + 2 + ... + n.
Давай решим задачу по рекурсии:
Напишите функцию sumTo(n), которая вычисляет сумму чисел 1 + 2 + ... + n.
Пора решить задачу:
Напишите функцию, которая генерирует все комбинации строки
Напишите функцию substrings(str), которая генерирует все комбинации строки.
Пример строки: 'dog'.
Ожидаемый результат: d, o, do, g, dg, og, dog.
function substrings(str) {
// Ваш код
}
substrings("dog"); // d, o, do, g, dg, og, dog
Напишите функцию, которая генерирует все комбинации строки
Напишите функцию substrings(str), которая генерирует все комбинации строки.
Пример строки: 'dog'.
Ожидаемый результат: d, o, do, g, dg, og, dog.
function substrings(str) {
// Ваш код
}
substrings("dog"); // d, o, do, g, dg, og, dog
Promise API
Метод Promise.all принимает массив промисов (может принимать любой перебираемый объект, но обычно используется массив) и возвращает новый промис.
Каким будет вывод этого фрагмента кода?
console.log('start');
const promise1 = new Promise((resolve, reject) => {
console.log(1)
})
console.log('end');
Метод Promise.all принимает массив промисов (может принимать любой перебираемый объект, но обычно используется массив) и возвращает новый промис.
Каким будет вывод этого фрагмента кода?
console.log('start');
const promise1 = new Promise((resolve, reject) => {
console.log(1)
})
console.log('end');
Оператор instanceof позволяет проверить, принадлежит ли объект указанному классу, с учётом наследования.
Почему instanceof в примере ниже возвращает true? Мы же видим, что a не создан с помощью B().
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
Почему instanceof в примере ниже возвращает true? Мы же видим, что a не создан с помощью B().
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true