Python 函数在循环中递归调用时,为什么会出现无限循环?

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 函数在循环中递归调用时,为什么会出现无限循环?的详细内容,更多请关注其它相关文章!