Задать вопрос
  • Почему получился бесконечный цикл?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Очевидно, потому что переменная a никак не может принять значение, равное единице. Начните с 7, например. Сколько раз надо 7 разделить на 2, чтобы получить 1? Вот-вот.

    И почему цикл крутится до единицы - её что, обрабатывать не надо? А отрицательные числа? А что если пользователь какой-нибудь мусор введёт? А почему у элементов id такие дурацкие? - не надо там чисел. А зачем по кнопке кликать? - неудобно.

    Пусть будет так:

    <input id="input">
    <p id="output"></p>

    document.querySelector('#input').addEventListener('input', e => {
      let num = parseInt(e.target.value);
      let str = '';
      const sign = num < 0;
      num = Math.abs(num);
    
      if (Number.isInteger(num)) do {
        const d = num % 2;
        str = d + str;
        num = (num - d) / 2;
      } while (num);
    
      document.querySelector('#output').textContent = str
        ? (sign ? '-' : '') + str
        : '<< МУСОР, А НЕ ЧИСЛО >>';
    });
    Ответ написан
    Комментировать