gpt4 book ai didi

python - 在每次新递归时重置 Collat​​z 计数器

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:28 24 4
gpt4 key购买 nike

我编写了一个代码来测量在 Collatz 中返回 1 所需的步数推测。这是我的代码

counter = 0
def collatz(n):
global counter
counter += 1
if n <= 0 :
return "Invalid Number"
elif n == 1 :
return counter
elif n % 2 == 1 :
n = 3*n + 1
return collatz(n)
elif n % 2 == 0 :
n = n/2
return collatz(n)
print(collatz(9921615699))
print(collatz(9921615699))

我希望最后两个打印命令打印 311 和 311。相反,它们打印 311 和 622。我想这很容易在代码中看出错误所在。我该如何解决?如何在每次命令完成时而不是在函数运行时重置计数器。

最佳答案

除了使用全局变量,您还可以将计数器设置为具有默认值的参数:

def collatz(n, counter=0):
counter += 1
if n <= 0 :
return "Invalid Number"
elif n == 1 :
return counter
elif n % 2 == 1 :
n = 3*n + 1
return collatz(n, counter)
elif n % 2 == 0 :
n = n/2
return collatz(n, counter)

关于python - 在每次新递归时重置 Collat​​z 计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com