2024-09-26 17:54:25 发布
网友
下面的代码在某些值(例如306, 136)上返回None,在某些值(42, 84)上正确返回答案。print a和return a应该产生相同的结果,但它不会:
306, 136
None
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)
您正在忽略递归调用的返回值:
gcdIter (a,b%a)
递归调用与对其他函数的调用没有区别;如果这是您试图产生的结果,您仍然需要对该调用的结果进行处理。您需要使用return传递该返回值
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)
您正在忽略递归调用的返回值:
递归调用与对其他函数的调用没有区别;如果这是您试图产生的结果,您仍然需要对该调用的结果进行处理。您需要使用
return
传递该返回值请注意,在指定以下对象时,可以将其指定给多个目标:
你真的不需要关心这里的大小值。更紧凑的版本是:
相关问题 更多 >
编程相关推荐