函数不会返回值,而是返回“None”

时间:2017-09-27 12:23:39

标签: python python-3.x function return

请帮我看看这段代码,它应该计算两个数字(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))

谢谢你们。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

return gcd(small, c)