为什么我的嵌套被忽略了?

时间:2017-09-05 03:42:51

标签: python python-3.x

这是我使用欧几里德算法找到最大公分母的代码。

def gcdIter(a, b):

    if a > b:
        if a%b == 0:
            return b
        r = a%b
        a = b
        return gcdIter(a, r)
    elif a < b:
        if b%a == 0:
            return a
        r = b%a
        a = b
        return gcdIter(a, r)

gcdIter(12, 2)

编辑:更改(elif b

4 个答案:

答案 0 :(得分:1)

我认为你的elif应该是这样的:

elif a < b:

由于a > bb < a基本相同......

答案 1 :(得分:0)

永远无法联系到您的精灵部分。如果a> b,则第一个if自身满足。将elif条件更改为b>一个。但是对于你的输入gcd(12,2)它应该可以工作。

答案 2 :(得分:0)

也许你可以这样做:

def gcdIter(a, b):
    if (a < b):
        return gcdIter(b, a)

    # rest of your code

在这种情况下,你可以确保在你的功能中,b的价值总是较低。

答案 3 :(得分:0)

当gcdIter返回一个值时,你需要打印它。

print gcdIter(12, 2)

你也可以像这样计算gcd

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