【发布时间】:2017-09-30 17:48:38
【问题描述】:
我对 Python 比较陌生,我决定尝试编写一个相对简单的 collatz 猜想,其中用户输入一个数字(整数)。代码只是一个调用自身的简单函数。 i 是一个列表,应该将函数计算的每个数字都附加到它上面。我是执行 Python 脚本的新手,我尝试过使用 IDLE shell 来运行代码。它问我想要什么号码,但是当我输入一个号码时,什么都没有打印出来?我确定我只需要编辑这段代码的一小部分(或者可能都是错误的呀)但是有人知道为什么我的脚本什么都不返回吗?对此感到抱歉,谢谢。 代码如下:
l = input("Enter a number: ")
l = int(l)
i = []
def collatz(n):
if n==1:
return i
if n%2 == 0:
n = n/2
i.append(n)
return collatz(n)
else:
n = ((n*3) + 1) / 2
i.append(n)
return collatz(n)
print(i)
collatz(l)
【问题讨论】:
-
print语句无法访问 - 您预计您的程序何时到达? -
顺便说一句,因为您正在处理整数,所以您应该使用
//地板除法运算符而不是/,它在 Python 3 中总是返回一个浮点数。 -
除非您将此作为递归练习,否则递归 Collatz 可能是个坏主意。你会用(一些)更大的数字来破坏堆栈。