递归的定义:python
什么事递归:函数递归是指“直接调用或间接调用”函数自己函数
直接调用:指的是在函数内置,直接调用函数自己code
间接调用:两个函数之间相互调用间接形成递归递归
每调用一次自身,至关于复制一份该函数,只不过参数有变化,参数的变化,就是重要的结束条件utf-8
最大递归层数作了一个限制:998,get
获取递归深度: 了解 sys.getrecursionlimit() 设置递归深度: 了解 sys.setrecursionlimit(深度值)
下面是一个递归函数的实例:it
#coding=utf-8 def calc(n): print(n) if int(n/2) > 0: calc(int(n/2)) else: print('------') print(n) calc(10) 打印结果: 10 5 2 1 ------ 1 2 5 10
递归分解io
def calc(10): print(10) if int(10/2) > 0: def calc(5): print(5) if int(5/2) > 0: def calc(2): print(2) if int(2/2) > 0: def calc(1): print(1) print('------') print(1) print(2) print(5) print(10)
def foo(n): print(n) n += 1 foo(n) foo(1)
想要递归有意义,必须遵循两个条件: - 回溯: 指的是重复地执行, 每一次执行都要拿到一个更接近于结果的结果, 回溯必要有一个终止条件。 - 递推: 当回溯找到一个终止条件后,开始一步一步往上递推。
小结class
#使用递归函数的优势是逻辑简单清晰,缺点是过深的调用会致使栈溢出。