问题描述
我正在做一本书的练习,要求我执行Collatz序列
Collatz猜想是数学中的一个猜想,它涉及一个定义如下的序列:以任何正整数n开头。然后从上一项按如下方式获得每个项:如果前一项是偶数,则下一项是前一项的一半。如果前一项是奇数,则下一项是前一项加3的3倍。推测是,无论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,iterations)
def condition(a,iterations):
clist.append(a)
if a == 1:
finished(iterations,clist)
else:
iterations += 1
try_again(a,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,iterations = 1)
if __name__ == "__main__":
main()
谢谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)