一.递归函数
1)递归函数
自己调用自己的函数
递:去
归:回
一去一回叫做递归
递归函数有回的过程,有两种情况可以触发:
1.当最后一层函数全部执行结束的时候,有触底反弹的过程(回马枪),回到上层函数空间的调用处
2.遇到return返回值,直接返回上层空间的调用处
递归函数在运行的时候,需要内存开辟空间才可以,这个空间叫做栈帧空间
1.去的过程就是不停的开辟栈帧空间,在回的时候,就是不停的释放栈帧空间
2.写递归函数的时候,必须给予跳出的条件,如果递归的层数过多,不推荐使用,容易产生内存溢出或者蓝屏
3.递归调用每一层空间都是独立的个体,独立的副本,资源不共享,可以通过return来完成值的共享
2)尾递归
自己调用自己,并且非表达式,把值放到参数中运算 (推荐使用)
好处:无论调用多少次函数,都只占用一份空间,只需考虑最后一层空间的结果是多少,就不用额外考虑回的过程了
cpython解释器目前不支持尾递归
二.数学模块
import math
1.ceil() 向上取整操作
2.floor() 向下取整操作
3.pow() 计算一个数值的N次方(结果为浮点数)(对比内置pow)
4.sqrt() 开平方运算(结果为浮点数)
5.fabs() 计算一个数的绝对值(结果为浮点数)(对比内置abs)
6.modf() 将一个数值拆分为整数和小数两部分组成元组
7.copysign() 将参数第二个数值的正负号拷贝给第一个(返回一个小数)
8.fsum() 将一个容器类型中的数据进行求和运算(结果为浮点数)(对比内置sum)
9.圆周率常数pi
三.随机模块
import random
1.random() 获取随机0~1之间的小数(左闭右开)
2.randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) 同range
3.randint() 随机产生指定范围内的随机整数(可以取到最大值)(了解)
4.uniform() 获取指定范围内的随机小数(左闭右开)
5.choice() 随机获取序列中的值(多选一)
6.sample() 随机获取序列中的值(多选多)[返回列表]
7.shuffle() 随机打乱序列中的值(直接打乱原序列)