def mike(a,b):
d=min(a,b)
e=d
if max(a,b)%d==0 and e%d==0:
return d
else:
return mike(max(a,b),d-1)
print(mike(12,18))
我找不到一种方法可以将'e'的值作为两个整数中最小值的固定值,在大小写为12的情况下。当代码移动时,'e'的值也是如此。但我希望它在两者中具有最小的固定值。抱歉,这个菜鸟问题。请帮助。
答案 0 :(得分:0)
所以你不需要功能,你可以添加e作为可选参数
def mike(a,b,e=None):
d=min(a,b)
if not e:
e=d
if max(a,b)%d==0 and e%d==0:
return d,e
else:
return mike(max(a,b),d-1,e)
print(mike(12,18))
这样你可以递归地调用它,并且仍然跟踪并输出原始函数的最小值
答案 1 :(得分:0)
我不明白为什么你设置e = d以及为什么你需要递归中的d-1
def mike(a,b):
rest = max(a, b) % min(a, b)
if rest == 0:
return min(a, b)
else:
return mike(min(a, b), rest)
gcd的计算。
(48,30)
将最大值除以最低值,然后得到其余值。 48/30 = 1(休息18)
将前一个除数除以其余部分 30/18 = 1(休息12)
再将前一个除数除以其余的除数 18/12 = 1(休息6)
再将前一个除数除以其余的除数 12 / 6 = 2(休息0)
gcd是休息时的除数== 0
答案 2 :(得分:0)
我最终在最后做到了这一点。谢谢你的所有答案。我知道我让它变得更复杂了。
def mike(x,y):
e=min(x,y)
def mi(a,b):
d=min(a,b)
if max(a,b)%d==0 and e%d==0:
return d
else:
return mi(max(a,b),d-1)
zz=mi(x,y)
return zz
print(mike(12,18))