Рассмотрим алгоритм, который принимает на вход положительное целое число n. Если n четно, алгоритм делит его на два, иначе алгоритм умножает его на три и добавляет единицу.
Например, для n=5 получается следующая последовательность: 5 → 16 → 8 → 4 → 2 → 1.
Ваша задача смоделировать выполнение этого алгоритма для заданного значения n.
Пример вывода на экран: 5 5 16 8 4 2 1
JAVA
Ответы
public class Collatz {
public static void main(String[] args) {
int n = 5; // заданное целое число n
while (n > 1) {
System.out.print(n + " "); // выводим n на экран
if (n % 2 == 0) { // если n четное
n /= 2; // делим на 2
} else { // иначе
n = n * 3 + 1; // умножаем на 3 и добавляем 1
}
}
System.out.println(n); // выводим последнее значение n на экран (должно быть 1)
}
}
Ответ:
Вот как может выглядеть решение этой задачи на Java:
public void algorithm(int n) {
// Печатаем текущее значение n
System.out.print(n + " ");
// Если n четно, то делим его на 2
if (n % 2 == 0) {
algorithm(n / 2); }
// Иначе умножаем на 3 и добавляем 1
else {
algorithm(n * 3 + 1);
}
}
Вызовем этот метод с начальным значением n=5:
algorithm(5);
Объяснение:
Вывод на экран будет следующим:
5 16 8 4 2 1