python全栈开发中级班全程笔记(第二模块) 第三部分 :递归

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

为什么限制递归次数,因为函数在递归的过程中,不管多少次都是占用 系统 运行内存的(因为递归就是执行函数本身 ,所以,是执行不完的)

一旦达到内存极限,就会导致吧系统内存撑爆,所以限制了递归次数

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/guoyilong/p/10121849.html