计算 GCD 时无法在 if 块中 return
Unable to return in if block while calculating GCD
我正在尝试计算 2 个数字的 GCD,以下代码块工作正常,我正在使用递归,但是当我尝试 return 一个值时,我无法这样做,return a
结果为 None
def gcd(a,b):
if b == 0:
print a
return a # This is not working
else:
gcd(b,a%b)
XX = gcd(3, 5)
print (XX)
输出:
1
None
您的代码
def gcd(a,b):
if b == 0:
print a
return a # This is not working
else:
gcd(b,a%b)
XX=gcd(3,5)
print (XX)
将不起作用,因为您在 gcd(b,a%b)
行中缺少 return 语句。所以应该是
def gcd(a,b):
if b == 0:
print a
return a
else:
return gcd(b,a%b)
print(gcd(12, 4))
顺便说一句 - 如果可能的话,不要自己编写代码,使用预定义的库:
from fractions import gcd
print(gcd(4, 12))
您的递归将不起作用...您缺少 return
语句并且该算法也不起作用...
这就是递归 gcd 的样子:
def gcd(a,b):
r = a % b
if r == 0:
return a
elif r == 1:
return 1
return gcd(b, r)
这里是一个非递归 gcd:
def gcd(a, b):
while b:
a, b = b, a % b
return a
另请注意,您可以只使用 math.gcd
。
我正在尝试计算 2 个数字的 GCD,以下代码块工作正常,我正在使用递归,但是当我尝试 return 一个值时,我无法这样做,return a
结果为 None
def gcd(a,b):
if b == 0:
print a
return a # This is not working
else:
gcd(b,a%b)
XX = gcd(3, 5)
print (XX)
输出:
1
None
您的代码
def gcd(a,b):
if b == 0:
print a
return a # This is not working
else:
gcd(b,a%b)
XX=gcd(3,5)
print (XX)
将不起作用,因为您在 gcd(b,a%b)
行中缺少 return 语句。所以应该是
def gcd(a,b):
if b == 0:
print a
return a
else:
return gcd(b,a%b)
print(gcd(12, 4))
顺便说一句 - 如果可能的话,不要自己编写代码,使用预定义的库:
from fractions import gcd
print(gcd(4, 12))
您的递归将不起作用...您缺少 return
语句并且该算法也不起作用...
这就是递归 gcd 的样子:
def gcd(a,b):
r = a % b
if r == 0:
return a
elif r == 1:
return 1
return gcd(b, r)
这里是一个非递归 gcd:
def gcd(a, b):
while b:
a, b = b, a % b
return a
另请注意,您可以只使用 math.gcd
。