代码如下:
#this file finds the gcd(a, b) using the euclidian algorithm
#uses the fact that, gcd(a, b) = gcd(rem(b,a), a)
def rem(a, b):
if(a - b > b):
rem(a-b, b)
return a-b
#finds the gcd of a,b. Make sure a<b.
def gcd(a, b):
if(a != 0):
gcd(rem(b, a), a)
else:
print(a, b)
return b
print(gcd(84, 126))
输出如下:
0 42
None
我很困惑,因为在返回语句之前,它打印(a,b),并将b打印为42。但是下一行的返回值是None。有人能解释一下这里发生了什么吗?
当您在gcd
中点击if
时,您不返回任何内容。如果您像这样添加return
:
def gcd(a, b):
if(a != 0):
return gcd(rem(b, a), a) # return here
else:
print(a, b)
return b
你会得到42,而不是None
。
编辑:我同意user3840170在评论中的回答——不是试图复制,我一定是在发布时格式化了我的答案:)