我在python中创建了一个函数,该函数查找两个数字的gcd,但它始终不返回任何值



代码如下:

#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在评论中的回答——不是试图复制,我一定是在发布时格式化了我的答案:)

相关内容

  • 没有找到相关文章

最新更新