一、递归
1.递归的定义
递归是函数嵌套调用中的一种特殊形式,函数在定义时,间接或直接调用自身,叫递归调用。
#直接调用本身
def f1():
print('============>递归')
f1()
func()
# #间接调用本身
def f1():
print('=============>我是f1')
f2()
def f2():
print('=============>我是f2')
f1()
f2()
# 直接调用或者间接调用本身,形成死循环,这种递归是无意义的递归,超过python限制的调用层级,代码会报错。
RecursionError: maximum recursion depth exceeded while calling a Python object
调用函数会产生局部的名称空间,占用内存,因为上述这种调用会无需调用本身,python解释器的内存管理机制为了防止其无限制占用内存,对函数的递归调用做了最大的层级限制。
2. 修改递归调用最大深度
import sys
sys.getrecursionlimit()
sys.setrecursionlimit(2000) #将默认的1000修改为2000
def f1(n):
print('from f1',n)
f1(n+1)
f1(1)