Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Задача на тему циклы, треба вивести на екран парні числа от 2 до N, через кому*/
- let number = +prompt('Введіть, будь ласка, число?');
- for (let a = 1; a <= number; a++) {
- if (a % 2 === 0) {
- console.put(a + (a === number ? "\n" : ", "));
- }
- }
- /* Далі йде факультативна інформація, якщо вона здастся вам зайвою чи не зрозумілою на цьому етапі - сміливо пропускайте , вона не допоможе вчитися, а без неї ви нічого не втратите в розвитку!
- Такий варіант є звичним, але має свої недоліки: так на кожній ітерації нам доводиться перевіряти, чи парне значення змінної а, а чи не рівна змінна а змінній number - щоб чи ставити кому, чи ні. Ці перевірки, звісно, виконуються компьютером досить швидко, як і інші операції, але все одно на кожну з них компьютер втрачає час. Якщо можемо уникнути будь якої операції в алгоритмі, а значить і в коді - маємо виграш у часі, в програмуванні кажуть: " зменьшуємо складність алгоритма за часом ". У вашому попередньому варіанті перевірки на рівність a === number не було - тобто ваш алгоритм був більш ефективний, бо мав меншу складність за часом (O(n) - о велике від н - так записуються складність за часом, https://uk.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D0%BE%D0%B2%D0%B0_%D1%81%D0%BA%D0%BB%D0%B0%D0%B4%D0%BD%D1%96%D1%81%D1%82%D1%8C_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%83
- ).
- Практично кожне завдання можна виконати різними алгоритмами - ваш первісний варіант був водночас простий та ефективний. Пропоную саме його вдосконалити: */
- let number = +prompt('Введіть, будь ласка, число?');
- let a; /* ця змінна нам знадобиться після циклу, тому виніс її з нього до наружного блока коду (скоупа). Інакше, якщо створити її (let a) в середині циклу, то вона існуватиме тільки там і зовні її не буде */
- for (a = 2; a < number - 1; a += 2) { /* замінив знак =< на < та ітеруємось до number - 1, щоб не дістатися передостаннього та останнього елементів, починаємо з 2, крокуємо +2 - лише по парним*/
- console.put(a + ", ");
- }
- /* тепер наш цикл пройшов супероптимально - не було жодної з перевірок (окрім a < number - 1;), та ітерацій вдвічи меньше ніж number , бо ж крокували лише по парним - через +2. Але тепер залишилось ще два (чи не два?) елементи, що з ними робити.. Може так: */
- if (a % 2 === 0) { // поміркуйте, як можемо позбавитися цієї перевірки - відповідь нижче)))
- console.put(a);
- } else {
- console.put(a + 1);
- }
- let n = +prompt('Введіть, будь ласка, число?');
- let a;
- for (a = 2; a < n - 1; a += 2) {
- console.put(a + ", ");
- }
- /* насправді після нашого циклу перевірка if (a % 2 === 0) зайва, бо після нашого циклу змінна а завжди буде парною: ми починаємо із значення 2, та на кожній ітерації додаємо теж 2. Отже можна просто вивести її без коми */
- if (a <= n) { // і без цієї перевірки працює, але введіть n = 1, чи будь-яку меншу за 2
- console.log(a);
- }
- /* залишилось дотриматися умови завдання і зробити так, щоб команда виводу у консоль була одна на весь код - можна використати змінну у яку дописувати значення, та вивести її після того як все зроблено .
- */
- // Гарного коду.
Add Comment
Please, Sign In to add comment