Начните с n. Если оно чётное, разделите его на 2; если нечётное — умножьте на 3 и прибавьте 1. Повторяйте процесс, пока значение не станет равным 1. В ответе укажите как начальное значение, так и финальную 1.
Реализуйте функцию collatz_sequence(n).
Входные данные
n: Положительное целое число, с которого начинается последовательность.
Выходные данные
Верните всю последовательность в порядке следования.
Ограничения
1 ≤ n ≤ 10 000. Для всех входных данных из этого диапазона последовательность по этому правилу достигает 1; все значения последовательности помещаются в знаковый 64-битный целый тип.
Примеры
Ввод:
n = 6
Ожидаемый вывод:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
Ввод:
long long n = 6;
Ожидаемый вывод:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
Ввод:
long n = 6;
Ожидаемый вывод:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};
Пояснение
6 — чётное, поэтому становится 3. Затем 3 превращается в 10. Продолжайте применять правило, пока не получите 1.
Ввод:
n = 1
Ожидаемый вывод:
expected = [1]
Ввод:
long long n = 1;
Ожидаемый вывод:
std::vector<long long> expected = {1};
Ввод:
long n = 1;
Ожидаемый вывод:
long[] expected = new long[] {1};
Пояснение
Начальное значение уже равно 1, поэтому преобразования не требуются.
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.