一 函数的递归
函数的递归调用是函数嵌套的一种特殊形式,具体是指在调用一个函数的过程中,直接或间接地调用了自己。
# 直接调用
def f1(): print(‘from f1‘) f1()
f1()
# 间接调用
def f1(): print(‘from f1‘) f2() def f2(): print(‘from f2‘) f1()
f1()
从上图可以看出,两种情况下的递归调用都是一个无限循环的过程,但在python对函数的递归调用的深度做了限制,因而并不会像大家所想的那样进入无限循环,会抛出异常,要避免出现这种情况,就必须让递归调用在满足某个特定条件下终止。
可以使用sys.getrecursionlimit()去查看递归深度,默认值为1000,虽然可以使用
sys.setrecursionlimit()去设定该值,但仍受限于主机操作系统栈大小的限制,而且也不推荐取改设定
二 回溯与递推
回溯:向下一层一层的调用
递推:向上一层一层的返回
举例:某公司四个员工,1号员工说自己薪资比2号员工高1000元,2号员工说自己薪资比3号员工高1000元,3号员工说自己薪资比4号员工高1000元,4号员工说自己薪资为5000元,那么一号员工薪资为多少元
# 代码实现过程 def salary(ren): if ren == 4: return 5000 return salary(ren + 1) + 1000 s = salary(1) print(s)
# 运行结果
8000
原文:https://www.cnblogs.com/poco/p/14603406.html