目录
一、递归的定义
函数的递归调用:递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用
python对递归调用循环的调用的次数有限制,最大深度为1000次。
# 修改次数,但一般不推荐
import sys
sys.setrecursionlimit(2000)
print(sys.getrecursionlimit())
案例:直接调用本身
def f1():
print('from f1')
f1()
f1()
简介调用本身
def f1():
print('from f1')
f2()
def f2():
print('from f2')
f1()
f1()
二、用函数来实现的循环
函数的递归调用本质就是一个循环过程
方式一:while循环、for循环
while True:
print(111)
print(222)
print(333)
方式二:递归循环
def f1():
print(111111)
print(22222)
print(33333)
f1()
f1()
三、结束递归
递归调用不应该无限调用下去,必须在满足某种条件下,结束递归
n = 0
while n < 10:
print(n)
n += 1
def func(n):
if n == 10:
return
print(n)
n += 1
func(n)
func(0)
四、递归的2个阶段
1、回溯:一层一层调用下去
2、递推:一层一层向上返回
age(5)=age(4)+10
age(4)=age(3)+10
age(3)=age(2)+10
age(2)=age(1)+10
age(1)=18
n>1 age(n)=age(n-1)+10
n=1 age(1)=18
def age(n):
if n == 1:
return 18
return age(n-1)+10
res=age(5)
print(res)
# 结果:58
五、递归的应用
l=[1,[2,[3,[4,[5,[6,[7]]]]]]]
def func(l):
for x in l:
if type(x) is not list:
# x不是列表
print(x)
else:
# x是列表
# 重新调用本段代码,传入一个新列表x
func(x)
func(l)