函数递归指的是重复 “直接调用或间接调用” 函数本身,这是一种函数嵌套调用的表现形式。
-
直接调用: 指的是在函数内置,直接调用函数本身。
-
间接调用: 两个函数之间相互调用间接造成递归。
直接调用:
def foo():
print('from foo')
foo()
间接调用:
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo()
foo()
了解:
python中有递归默认深度: 限制递归次数
998, 1000
PS: 但是在每一台操作系统中都会根据硬盘来设置默认递归深度。
获取递归深度: 了解
sys.getrecursionlimit()
设置递归深度: 了解
sys.setrecursionlimit(深度值)
注意: 单纯的递归调用时没有任何意义的。
想要递归有意义,必须遵循两个条件:
- 递推:
指的是重复地执行, 每一次执行都要拿到一个更接近于结果的结果,
递推必须要有一个终止条件,否则无限递归。
- 回溯:
当递推找到一个终止条件后,开始一步一步往上回溯。
age(5) == age(4) + 2
age(4) == age(3) + 2
age(3) == age(2) + 2
age(2) == age(1) + 2
age(1) == 18 # 回溯终止的结果
#result:age(n) = age(n - 1) + 2
方式一:
def age(n):
if n == 18
return 18
else:
return age(n - 1) + 2 #age2
res=age(5)
print(res)
>>>26
方式二:#三元表达式
def age(n):
18 if n == 18 else age(n-1)+2
res=age(5)
print(res)