在python中重复的递归值 def序列(n): 而n=1: 打印(n) 如果n%2==0: 顺序(n/2) 其他: 顺序(n*3+1) 顺序(53)
此循环未终止。我不明白为什么。删除while循环。您不需要这样做,因为递归函数正在完成它的工作 以下是您的代码的更正版本:在python中重复的递归值 def序列(n): 而n=1: 打印(n) 如果n%2==0: 顺序(n/2) 其他: 顺序(n*3+1) 顺序(53),python,recursion,Python,Recursion,此循环未终止。我不明白为什么。删除while循环。您不需要这样做,因为递归函数正在完成它的工作 以下是您的代码的更正版本: def sequence(n): print(n) if n == 1: return elif n%2==0: sequence(n//2) else: sequence(n*3+1) sequence(53) 将
def sequence(n):
print(n)
if n == 1:
return
elif n%2==0:
sequence(n//2)
else:
sequence(n*3+1)
sequence(53)
将
n/2
更改为n//2
,使其不会成为浮点。序列将在2,2,2,2,2结束。。。因为无论一开始n
等于什么,它都会下降到2
,然后:
n = 2
2 / 2 = 1 # sequence(1)
1 * 3 + 1 = 4 # sequence(4)
4 / 2 = 2 # sequence(2)
2 / 2 = 1 # sequence(1)
1 * 3 + 1 = 4 # sequence(4)
4 / 2 = 2 # sequence(2)
... # ....
您永远不会在函数内部更改
n
,因此while
循环永远不会终止。也许你的意思是如果n!=1:?您不需要一个while
循环和递归。