Проблемы Python — 1: Упражнение 23 с решением
Напишите программу Python, в которой вы берете любое положительное целое число n, если n четное, разделите его на 2, чтобы получить n/2 . Если n нечетное, умножьте его на 3 и прибавьте 1, чтобы получить 3n + 1. Повторяйте процесс, пока не дойдете до 1.
Согласно Википедии, гипотеза Коллатца — это математическая гипотеза, названная в честь Лотар Коллатц, который первым предложил ее в 1937 году. Гипотеза также известна как гипотеза 3n + 1.
Гипотезу можно резюмировать следующим образом. Возьмем любое натуральное число n. Если n четно, разделите его на 2, чтобы получить n/2. Если n нечетное, умножьте его на 3 и прибавьте 1, чтобы получить 3n + 1. Повторяйте процесс (который был назван «Половина или тройной плюс один») до бесконечности. . Предполагается, что независимо от того, с какого числа вы начнете, вы всегда в конечном итоге достигнете 1.
Пример:
Например, начиная с n = 12, получается последовательность 12, 6, 3, 10, 5, 16, 8, 4, 2, 1.
n = 19, например, требуется больше времени, чтобы достичь 1:19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Пояснение:
Пример решения : —
Код Python:
def collatz_sequence (x): num_seq = [x] if x 1 : if x% 2 == 0: x = x/2 else: x = 3 * x + 1 # Добавлена строка num_seq.append (x) return num_seqprint (collatz_sequence (12)) print (collatz_sequence (19))
Пример вывода:
[12, 6.0, 3.0, 10.0, 5.0, 16.0, 8.0, 4.0, 2.0, 1.0] [19, 58, 29.0, 88.0, 44.0, 22.0, 11.0, 34.0, 17.0, 52.0, 26.0, 13.0, 40.0, 20.0, 10.0, 5.0, 16.0, 8.0, 4.0, 2.0, 1.0]
Схема:
Визуализируйте выполнение кода Python:
Следующий инструмент визуализирует шаг за шагом, что делает компьютер при выполнении указанной программы:
Редактор кода Python: