Java Начинающий: у меня большая часть кода завершена, чтобы решить приведенную ниже проблему, но возникли проблемы с моим разделом l oop, так как в настоящее время он делит одно значение. Он должен продолжать делиться, пока не достигнет 1. Я не уверен, что не так, поэтому любая помощь очень ценится! Однако я не могу использовать массивы, встроенные процедуры сортировки или любые другие Java Классы коллекций
Проблема: Напишите программу, которая будет запрашивать у пользователя положительное целое число: N. Программа будет многократно делить ввод пополам используя al oop, отбрасывая любую дробную часть, пока она не станет равной 1. Программа должна печатать в отдельных строках:
- последовательность значений «пополам», по одному на строку
- необходимое количество итераций
- значение log2 (N)
Мой код и вывод при вводе значения 9:
import stdlib.StdIn;
import stdlib.StdOut;
public class DS1hw1b {
public static void main(String[] args) {
int countIteration = 0;
StdOut.println("enter a positive number: ");
int N = StdIn.readInt();
for (int i = 1; i <= 1; i++) {
countIteration++;
if ((N/2) != 1)
StdOut.println(N/2);
StdOut.println("number of iterations: " + countIteration);
//compute log formula
StdOut.println("log2 of input: " + (Math.log(N)/Math.log(2)));
}
}
}
Output:
enter a positive number:
9
4
number of iterations: 1
log2 of input: 3.1699250014423126
Тем не менее, я должен видеть 9, 4, 2 и 1 на отдельных строках и итерации 3.