2017-09-27 72 views
0

请帮我看看这段代码,它应该计算两个数字(a, b)之间的最大公分数。我遇到的问题是该程序不会按预期返回c,而是返回None。但是当我使用print声明时,它会打印出c的值。功能不会返回值,而是返回“无”

这是我的代码:

def gcd(a, b): 
    if a == 0: 
     return b 
    elif b == 0: 
     return a 

    elif a > b: 
     big, small = a, b 
    else: 
     big, small = b, a 

    c = big % small 
    if c == 0: 
     print(small) 
     return small 
    gcd(small, c) 

print(gcd(1071, 462)) 

谢谢你们。

+2

嗯,你忘了'return'在最后一行。 'return gcd(small,c)'。 –

+0

我认为这是一个练习,你意识到Python已经包含了'math.gcd'? –

回答

1

当没有明确的return遇到并且函数体结束时,Python隐式地返回None

在你的情况下,如果它通过它只是打所有的其他情况:

gcd(small, c) 
return None # you haven't put that in explicitly but that's how Python processes it 

所以,你可能只需要最后一行改为:

return gcd(small, c) 
+0

非常感谢。我在考虑“if”声明中的回报。 – Tpenny