python:从入门到放弃 11 函数递归
函数递归
即函数在运行过程中直接或者间接的调用了自身
'''直接调用'''
def index():
print('from index')
index()
index()
# 会报错
'''间接调用'''
def index():
print('from index')
func()
def func():
print('from func')
index()
func()
# 会报错
'''
所以递归需要满足两个要求
1.每次递归 复杂度必须降低
即越往下递归应该离解决问题的答案越近
2.必须要有明确的结束条件
'''
例子
'''
需求:我想知道我们班坐在第一排的某个学生年龄
过程:
我问他多大了 他调皮不告诉我 说比后面那个同学大两岁
后面的说比他后面的大两岁
...
问到最后你一排 终于开口说 18岁
...
知道最后一排的年级回推就可以知道第一排的年级
名词:
递推:一层层往下问
回溯:根据结果推结论
'''
def get_age(n):
if n == 1:
return 18 # 有明确的结束条件
return get_age(n-1) + 2
print(get_age(4))