
python函数在循环中调用的陷阱
在编写python程序时,当函数在循环体内被递归调用时,可能会出现问题。考虑以下求最大公约数的示例代码:
a = 666
b = 1414
def gcd(x, y):
x, y = y, x % y
while x % y > 0:
gcd(x, y)
else:
return y
print(gcd(666, 1414))这段代码无法正确运行,因为函数gcd在循环体内被递归调用时,缺少return语句。这会导致函数在以下代码块中陷入无限循环:
x, y = y, x % y
while x % y > 0:
gcd(x, y)为了解决这个问题,需要在gcd函数中添加return语句,以从递归调用中返回:
立即学习“Python免费学习笔记(深入)”;
def gcd(x, y):
x, y = y, x % y
while x % y > 0:
return gcd(x, y)
else:
return y添加return语句后,代码将按预期工作,并打印最大公约数(在本例中为2)。










