首页 > 解决方案 > 计算 GCD 时无法返回 if 块

问题描述

我正在尝试计算 2 个数字的 GCD,以下代码块工作正常,我正在使用递归,但是当我尝试返回一个值时,我无法这样做,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

标签: pythongreatest-common-divisor

解决方案


你的代码

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)

将不起作用,因为您缺少该行中的 return 语句gcd(b,a%b)。所以应该是

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))

推荐阅读