在使用for或while循环时,可以使用break终止循环,但是对于另一种循环形式——递归函数,无法使用break,那么如何退出递归函数呢?
结论:使用return或全局变量
笔者希望使用递归函数打印1-20中的奇数,退出方法首先考虑exit:
x = 1
print(x)
def fun():
global x
if x < 20:
x = x+2
print(x)
else:
exit()
fun()
fun()
运行结果如下:看最后一行即可
显然exit未能退出递归函数,随后又尝试了quit(),也未能退出。
将exit()换成return后,可以得到满意的结果:
但return其实是向上一层返回,如果递归函数较复杂,层层嵌套,return虽然截断了当前层,但返回上一层后递归仍在继续。
查找资料时发现有朋友提出,可以使用一个布尔型全局变量,通过它阻止递归函数的运行,具体解释参照https://jingyan.baidu.com/article/c45ad29cf51378051753e200.html