这是我使用欧几里德算法找到最大公分母的代码。
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)
答案 0 :(得分:1)
我认为你的elif
应该是这样的:
elif a < b:
由于a > b
和b < 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)