函数的递归
一、函数的递归
单纯的递归调用时没有任何意义
函数的递归是指重复 “直接调用或间接调用” 函数本身,这是一种函数嵌套调用的表现形式。
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()