以下代码返回None某些值(例如306, 136),42, 84返回某些值(),正确返回答案。在print a和return a应产生相同的结果,但它并不:def gcdIter (a,b): c = min (a,b) d = max (a,b) a = c b = d if (b%a) == 0: print a return a gcdIter (a,b%a) print gcdIter (a,b)
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
您将忽略递归调用的返回值:
gcdIter (a,b%a)
递归调用与对其他函数的调用没有什么不同;如果那是您试图产生的结果,您仍然需要对该调用的结果做些事情。您需要将返回值传递给return
return gcdIter (a,b%a)
请注意,分配时可以分配给多个目标:
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
return a
return gcdIter(a, b % a)
您真的不需要关心这里的较大和较小值。一个更紧凑的版本是:
def gcd_iter(a, b):
return gcd_iter(b, a % b) if b else abs(a)
添加回答
举报
0/150
提交
取消