python全栈开发笔记第二模块
第三部分 :递归
一、递归定义及使用
定义:什么叫递归?递归就是在函数的执行中调用自己
下面代码举例说明:
例: def recursion(n): #设置计数 print(n) #为了能验证调用自己多少次,打印计数 recursion(n+1) #每次执行完加一 recursion(1)
执行代码结果: 1 2 3 #每执行一次就会+1,就像 for 循环(死循环到边界)
....... 996 997 998raceback (most recent call last): RecursionError: maximum recursion depth exceeded while calling a Python object #发现报错,报错的意思是说递归到了最大 极限(系统默认1000次,除去上下被执行的2次,正好998次)
查看系统默认递归层:
例: import sys #导入python工具箱 sys print(sys.getrecursionlimit()) #打印系统默认递归层 def recursion(n): #再次执行 print(n) recursion(n+1) recursion(1)
执行代码结果: 1000 #打印系统默认递归层是1000次 1 2 3 #每执行一次就会+1,就像 for 循环(死循环到边界) ....... 996 997 998raceback (most recent call last): RecursionError: maximum recursion depth exceeded while calling a Python object
修改系统默认递归层:
例: import sys #导入python工具箱 sys print(sys.getrecursionlimit()) #打印系统默认递归层 sys.setrecursionlimit(1500) #系统默认递归层修改方法(修改成1500) def recursion(n): print(n) recursion(n+1) #再次执行 recursion(1)
执行代码结果: 1 2 ....... 996 ...... 1497 #发现已经修改了设置递归层 (1500) 1498raceback (most recent call last): RecursionError: maximum recursion depth exceeded while calling a Python object
为什么限制递归次数,因为函数在递归的过程中,不管多少次都是占用 系统 运行内存的(因为递归就是执行函数本身 ,所以,是执行不完的)
一旦达到内存极限,就会导致吧系统内存撑爆,所以限制了递归次数