【发布时间】:2017-06-11 10:24:18
【问题描述】:
这是一个非常愚蠢的问题,但是......
def gcd(a, b):
if a < b:
a, b = b, a
if a == 0:
return b
elif b == 0:
return a
return gcd(b, a % b)
那么当函数末尾没有return时,为什么代码会返回None?当它被递归调用并且a 或b 最终等于0 时,它满足if 条件对吗?然后它应该返回非零值。
【问题讨论】:
-
那么中间步骤不会返回值。
-
这个函数永远不应该返回
None。a和b的值是什么让您观察到None? -
@DYZ 上面写的函数不会返回None,但我认为他是说当他省略最后一个返回时(使他的最后一行简单
gcd(b, a % b))然后 它返回None,他在问为什么。 -
@Dan 听起来像是一个合理的解释。