为什么我的 Python 函数返回 None?

Why is my Python function returning None?

我是 python 的新手,我尝试使用欧几里安算法创建 GCD 函数。但是每当我尝试打印答案时,它都会 returns none。可能有人让我知道我做错了什么。

代码:

def gcd(a,b):
    if a - b != 0:
        b = b - a
        b = abs(b)
        if a > b:
            a,b = b, a
            return gcd(a,b)
            
        else:
            gcd(a,b)
    else: 
        print(a)

x = input("Give First Num... ")

y = input("Give Second Num... ")

answer = gcd(int(x), int(y))

print("GCD = {}".format(answer))

控制台:

120
GCD = None
def gcd(a,b):
    if a - b != 0:
        b = b - a
        b = abs(b)

        if a > b:
            a,b = b, a
            return gcd(a,b)

        else:
            return gcd(a,b)
    else:
        return a

x = input("Give First Num... ")

y = input("Give Second Num... ")

answer = gcd(int(x), int(y))

print(answer)
print("GCD = {}".format(answer))

在最后的“else”中,把return放在print()之前,因为当你使用一个print并且你想得到值时,它不会return而只是打印(根据最后一个条件),你应该得到 None 值。

为了 return 的东西,只需对您的代码进行一个小的调整:

def gcd(a,b):
    if a - b != 0:
        b = b - a
        b = abs(b)
        if a > b:
            a,b = b, a
            return gcd(a,b)
            
        else:
            return gcd(a,b)
    else: 
        return a

这样写,你的函数总是return赋值给answer的东西。