一、函数的递归
单纯的递归调用时没有任何意义
单纯的递归调用时没有任何意义
函数的递归是指重复 “直接调用或间接调用” 函数本身,这是一种函数嵌套调用的表现形式。
1.1 函数调用的方式
- 直接调用
- 指的是在函数体代码中直接调用函数本身
# 直接调用 def func(): print('你好') func() func()
- 间接调用
- 两个函数之间相互调用,间接造成递归
def foo(): print('from foo') goo() def goo(): print('from goo') foo() foo()
二、回溯和递归
想要递归有意义,必须遵守两个条件:
- 回溯
- 回溯是指重复的执行,每一次执行都要拿到一个更接近于结果的结果。
- 回溯必要有一个终止条件
- 递归
- 当回溯找到一个终止条件后,开始一步一步往上递推
def age(n): if n == 1: return 18 return age(n - 1) + 2 res = age(5) print(res)
三、拓展面试(了解)
3.1 python中默认递归深度
python中默认递归次数,999或者1000
ps:但是每一台操作系统中会根据硬盘来设置默认递归深度
# 获取递归深度 import sys sys.getrecursionlimit() # 设置递归深度 sys.setrecursionlimit()
# 查看当前可以承受的递归深度 int = 0 def func(): global int int += 1 print(int) func() func()