我不明白这两个函数之间的区别,为什么返回函数的函数有效但另一个函数没有?
假设x> 1,该函数返回x和y之间的最大公分母。 ÿ
非工作职能:
def gcd(x, y):
z = x % y
if z == 0:
return y
else:
gcd(y, z)
工作职能:
def gcd(x, y):
z = x % y
if z == 0:
return y
else:
return gcd(y, z)
答案 0 :(得分:4)
python中的每个函数都返回一些东西。实际上,您可以在python中的每个函数的末尾放置一个return None
语句,而不会更改这些函数的工作方式。所以你的第一个函数可以写成
def gcd(x, y):
z = x % y
if z == 0:
return y
else:
gcd(y, z)
return None
所以,当我致电gcd(28, 14)
时,我得到None
。当您return
递归调用gcd
时,代码等同于
def gcd(x, y):
z = x % y
if z == 0:
return y
else:
return gcd(y, z)
return None
所以我们要么返回0
,要么返回gcd(y, z)
,而不是None
,因为代码永远不会那么远。