函数递归
1.递归的定义
函数的递归调用:是函数嵌套调用的一种特殊形式
函数的递归调用指的是在调用一个函数的过程中又直接或间接地调用该函数本身
例:直接调用函数f1本身
def f1():
print('from f1')
f1()
f1()
例:间接调用函数f1本身
def f1():
print('from f1')
f2()
def f2():
print('from f2')
f1()
f1()
例:一段代码循环的方式
#方式1:while,for循环
while True:
print('好好学习')
#方式2:递归的本质就是循环
def f():
print('好好学习')
f()
f()
递归调用都是一个无限循环的过程
强调:递归调用不应该无限循环, 必须让递归调用在满足某个特定条件下终止
x=0
while x<10:
print(x)
x+=1
def f1(n):
if n == 10:
return
print(n)
n+=1
f1(n)
f1(0)
2.递归的两个阶段
回溯:一层一层调用下去
递推:满足某种结束条件,结束递归调用,然后一层一层返回
age(5) = age(4) + 10
age(4) = age(3) + 10
age(3) = age(2) + 10
age(2) = age(1) + 10
age(1) = 18
def age(n):
if n == 1:
return 18
return age(n-1) + 10
res=age(5)
print(res)
3.递归的应用
l=[1,2,[3,4]]
for x in l:
if type(x) is list:
for a in x:
print(a)
else:
print(x)
l=[1,2,[3,4],6,7,[8,9,10,[11,12,[13,[14,15]]]]]
def f1(list1):
for x in list1:
if type(x) is list:
# 如果是列表,应该再循环、再判断,即重新运行本身的代码
f1(x)
else:
print(x)
f1(l)