Град: петля для № 1- № 200 - PullRequest
       2

Град: петля для № 1- № 200

0 голосов
/ 20 сентября 2019

Проблема града состоит в том, чтобы взять x и, если он четный, разделить его на два.И если это нечетно, умножьте это на 3 и добавьте 1. продолжайте это, и вы получите повторяющиеся 4, 2, 1, 4, 2, 1 ... У меня проблемы с созданием цикла и печатью решений длявходы # 1- # 200.

Я попытался добавить цикл for, цикл while и цикл while внутри цикла for.Я не могу понять, как заставить переменную увеличиваться после прохождения уравнения один раз.

Я понял, как сделать код со входом.Но здесь я попытался вставить цикл for, но он печатает «1», вот и все.

for (int i = 200; i <= 200; i--) {
    System.out.print(i + ", ");

    while (i > 4) {
        if (i % 2 == 0) {
            int i1 = i / 2;
            System.out.print(i1 + ", ");
            i = i1;
        }
        else {
            int i1 = i * 3 + 1;
            System.out.print(i1 + ", ");
            i = i1;
        }
    }

    System.out.println(" ");
}

1 Ответ

1 голос
/ 20 сентября 2019

Вы перезаписываете свой счетчик цикла.Таким образом, после того, как вы покончили с проблемой града с x = 200, вы не запустите ее для x = 199, но x = 3.

Во-вторых, вы не пытаетесь значения от 1 до 200, но все значения меньше илиравно 200. Это включает в себя и отрицательные числа.Таким образом, ваша программа заканчивается бесконечным циклом.

Мое решение состояло бы в том, чтобы ввести дополнительное целое число j, которое вы инициализируете значением i в начале цикла for и продолжите делать вычитания и т. Д.целое число j.Чтобы сделать внешний цикл for конечным, я переключил условие на i> 0. После этого цикл остановится после того, как вы покончили с проблемой града для x = 1.

for (int i = 200; i > 0; i--) {
        int j = i
         System.out.print(i + ", ");

         while (j > 4) {

            if (j % 2 == 0) {
               int i1 = j / 2;
               System.out.print(i1 + ", ");
               j = i1;

            }
            else {
               int i1 = j * 3 + 1;
               System.out.print(i1 + ", ");
               j = i1;
            }
         }
         System.out.println(" ");

      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...