Python 函数在循环中递归调用时,为什么会出现无限循环?
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语句,以从递归调用中返回:
def gcd(x, y): x, y = y, x % y while x % y > 0: return gcd(x, y) else: return y
添加return语句后,代码将按预期工作,并打印最大公约数(在本例中为2)。
以上就是Python 函数在循环中递归调用时,为什么会出现无限循环?的详细内容,更多请关注其它相关文章!