эффективное или неточное использование вызовов функций

#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