python - 我编写了一个简单的代码来查找两个数字的 GCD,并尝试了 3 个值 (3, 12)、(35, 24)、(24,12)

标签 python

下面的代码对于 value(35, 24) 返回 None 任何人都可以建议为什么它显示 None 而不是 1 而对于其他值工作正常?

我尝试过以下解决方案

def gcd(a, b):
    if a < b:
        if b % a == 0:
            return a
        else:
            gcd(a, b % a)
    elif a > b:
        if a % b == 0:
            return b
        else:
            gcd(b, a % b)

print gcd(35, 24)

我期望输出为1,但实际输出为None

最佳答案

您缺少return在你的递归调用中。例如,

gcd(a, b % a)

应该是:

return gcd(a, b % a)

您还遇到一个问题,当 a == b 时,您不会返回任何内容。 。从什么时候开始a == b两者都不是a < ba > b是真的。你能解决这个问题吗?

关于python - 我编写了一个简单的代码来查找两个数字的 GCD,并尝试了 3 个值 (3, 12)、(35, 24)、(24,12),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58531482/

相关文章:

python - 类型错误 : 'generator' object is not callable

使用 Tor 的 Python 请求

python - 如何使用python从csv中的同一列拆分日期和时间?

python - 构建扩展时,distutils 会忽略对 setup.py 的更改吗?

python - 如何在 Python 中精确打印 double?

python - 使用 pyinstaller 的备用/tmp 位置

python - 在 Python3 中评估字符串中的 UTF-8 文字转义序列

python - 用于匹配图像相似部分的命令行工具

python - 如何修复操作系统错误: [WinError 6] The handle is invalid with Python and Selenium?

python - 根据行条件对轴 1 上的数据框进行子集化