【发布时间】:2016-08-25 22:52:24
【问题描述】:
我在下面的代码中找不到我的错误。如果我在else部分说“return”而不是“print”,代码不能执行else部分,它只在if部分进行计算。我怎样才能解决这个问题?
def calculatePerimeter(length, depth):
if depth == 1:
return 3 * length
else:
print (calculatePerimeter(length, depth-1) * (4/3)**(depth)) / ((4/3)**(depth-1))
calculatePerimeter(100, 3)
【问题讨论】:
-
我试了一下效果很好。
calculatePermimiter(100, 3)返回300。 -
由于将
return替换为print,您会遇到该错误。如果函数在 else 部分没有“返回”任何内容,则返回None。这就是您在错误消息中看到的NoneType。 -
我尝试了您所说的所有解决方案,但 300 不是正确答案。它给你 300 因为它根本不能执行 else 部分。 300 来自 if 部分,我的意思只是递归的基本情况。
-
也许递归的逻辑是错误的,问题不在于类型。不过谢谢。
标签: python python-3.x recursion typeerror nonetype