#python #function #collatz
#python #функция #collatz
Вопрос:
Я выполняю упражнение из книги, в котором меня просят выполнить последовательность Collatz
Гипотеза Коллатца — это гипотеза в математике, которая касается последовательности, определенной следующим образом: начинайте с любого положительного целого числа n. Тогда каждый термин получается из предыдущего термина следующим образом: если предыдущий термин четный, следующий термин равен половине предыдущего термина. Если предыдущий термин нечетный, следующий термин в 3 раза больше предыдущего плюс 1. Гипотеза заключается в том, что независимо от того, какое значение n, последовательность всегда будет достигать 1.
и распечатайте результаты.
Я также, ради себя, хотел записать количество итераций, которое потребуется до достижения 1, и сохранить все результаты на этом пути в виде списка.
Далее следует код, который я написал. Вы можете судить по заданию, что я новичок, поскольку это, вероятно, довольно элементарная работа. Моя программа работает и выдает результат именно так, как мне бы хотелось. Что я хотел бы знать: было ли это хорошим использованием функций для достижения моей цели или параметры / аргументы излишне сложны?
def collatz(number):
if number % 2 == 0:
number = number // 2
return number
else:
number = (3*number 1)
return number
def try_again(a, clist, iterations):
new_result = collatz(a)
condition(new_result, clist, iterations)
def condition(a, clist, iterations):
clist.append(a)
if a == 1:
finished(iterations, clist)
else:
iterations = 1
try_again(a, clist, iterations)
def finished(iterations, clist):
print(f"finished after {iterations} iterations")
print(clist)
def main():
clist = []
number = int(input("Collatz seed: "))
a = collatz(number)
condition(a, clist, iterations = 1)
if __name__ == "__main__":
main()
Спасибо за вашу помощь.
Комментарии:
1. Под «мутным» вы подразумеваете неэффективный?
2. Вы могли бы попробовать получить лучшие ответы на codereview.meta.stackexchange.com