Деление до достижения определенного числа и сохранение количества раз, которое разделил цикл - PullRequest
0 голосов
/ 25 сентября 2019

Если вы разделите 1 на 2, вы получите 0,5.Если вы разделите его снова на 2, вы получите 0,25.Напишите программу, которая вычисляет и выводит число раз, которое вам нужно разделить 1 на 2, чтобы получить значение меньше одной десятитысячной (0,0001).

У меня есть цикл for, который должен работать, но его нетвозвращая любые результаты

открытый класс Main {

public static void main(String[] args) {
    double count ;
    for(double i = 1; i<= 0.0001; count++){
            count = i/2;


        System.out.println("You have to divide 1 " + count + "times to get 0.0001");


    }

Запущенная программа просто ничего не возвращает.

Ответы [ 4 ]

2 голосов
/ 25 сентября 2019

Попробуйте это

    int count = 0;
    double i = 1;
    while(i >= 0.0001){
            i = i/2;
            count++;
            System.out.println("You have to divide 1 " + count + " times to get 0.0001");
    }

Возможно вы хотите распечатать только после цикла

До того, как значение счетчика никогда не использовалось для оценки цикла.Попробуйте использовать две переменные.

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

Вы можете использовать код ниже.

        int count = 0;
        for(double i = 1; i>= 0.0001; ){
                i = i/2;
           count++;

            System.out.println("You have to divide 1 " + count + " times to get " + i);


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

Хорошо, я понял, что нужно было просто переключить некоторые вещи в публичный класс Main {

public static void main(String[] args) {

    int count = 0;
    for (double i = 1; i >= 0.0001; count++ ) {
             i = i / 2;



    }
    System.out.println("You have to divide 1 " + count + " times to get 0.0001");
0 голосов
/ 25 сентября 2019

Вы можете перевести свое уравнение:

x / y^n <= z

в

n >= log(x/z) / log(y)

И поэтому это просто:

public static void main(String[] args) {
   System.out.println("You have to divide 1 " + Math.ceil(Math.log(1.0 / 0.0001) / Math.log(2)) + " times by 2 to get 0.0001");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...