Python 递归Collatz猜想输出挑战
我有一个递归函数来计算collatz猜想。代码生成正确的数字,它根据计数器递归调用自己。计数器用完后,应返回正确的数字-但返回Python 递归Collatz猜想输出挑战,python,recursion,Python,Recursion,我有一个递归函数来计算collatz猜想。代码生成正确的数字,它根据计数器递归调用自己。计数器用完后,应返回正确的数字-但返回None def collatz_con(x, revs): print("start") print(x, revs) if (x%2 == 0) and (revs != 0): print("even and revs =" + str(revs)) holder = x//2 print(ho
None
def collatz_con(x, revs):
print("start")
print(x, revs)
if (x%2 == 0) and (revs != 0):
print("even and revs =" + str(revs))
holder = x//2
print(holder)
collatz_con(holder, revs - 1)
elif (revs != 0):
print("odd and revs =" + str(revs))
holder = ((3*x) + 1)
print(holder)
collatz_con(holder, revs -1)
else:
print("else exercised")
return x
print(collatz_con(1071, 14))
是否应返回并打印
x
变量?您犯了一个常见错误,即递归函数collatz\u con()
返回一个值,但当您递归调用它时,您忽略了该返回值。我猜你想要的东西更像:
def collatz_con(x, revs):
print(x, revs)
if x % 2 == 0 and revs != 0:
print("even and revs =", revs)
holder = x // 2
print(holder)
return collatz_con(holder, revs - 1)
if revs != 0:
print("odd and revs =", revs)
holder = 3 * x + 1
print(holder)
return collatz_con(holder, revs - 1)
print("else exercised")
return x
您犯了一个常见错误,即递归函数
collatz\u con()
返回一个值,但当您递归调用它时,您忽略了返回的值。我猜你想要的东西更像:
def collatz_con(x, revs):
print(x, revs)
if x % 2 == 0 and revs != 0:
print("even and revs =", revs)
holder = x // 2
print(holder)
return collatz_con(holder, revs - 1)
if revs != 0:
print("odd and revs =", revs)
holder = 3 * x + 1
print(holder)
return collatz_con(holder, revs - 1)
print("else exercised")
return x
我想我明白了。我从函数内部调用collatz函数,您的方法返回递归调用。要提供最终答案,将执行else语句,并将最终值返回到原始函数调用。谢谢,我想我明白了。我从函数内部调用collatz函数,您的方法返回递归调用。要提供最终答案,将执行else语句,并将最终值返回到原始函数调用。谢谢