递归
函数在自身调用自身
需要终止函数否则会进入死循环
优点 复杂问题简单化;
缺点
栈内用占用量大(通过不断拷贝栈内存进行函数调用,且栈内存有限,易引起栈内存溢出错误,栈内存崩溃弹出stack Overflow Error)。
理解递归内存调用分析图
def get_recoursion_count(n):
if n==1:
return 1
return n+get_recoursion_count(n-1)
print(get_recoursion_count(100))
课堂练习:
青蛙跳级
def get_ladder_count(n):
if n ==1 or n==2:
return n
return (get_ladder_count(n-1)+(n-2))
不死兔子
- 汉诺塔游戏
- Python字符串对象是一种基本数据类型,既然是对象,就存在对象的方法和属性。
len(s) 获取长度
注意:在py字符串中是基本数据类型,因此可以正常通过==进行判断。
dir(s)
help( )
字符串对象的方法
不改变s本身
Eg:
字符串转字节 encode;字节转字符串decode。
计算机底层存储的都是字节数据,
将字符串转换为字节数据使用方法有两种:
1 在字符串前面家b,但只支持ASCLL表中的符号;
b’abc’
b’a’
b’符号’ #error
2 使用encode方法,注意转换时编码的问题
“符号”.encode() #默认编码是utf-8
“符号”.encode(‘utf-8’)
“符号”.encode(‘gbk)
切片
Python提供给开发者用来切割和获取有序序列的一种方案。
切片是从下标衍生的一种技术。允许下标越界,前闭后开。
Seq[sum] #从脚标获取元素
Seq[sum:] #从num位置开始被截取数据
Seq[strand:end] #从start位置开始截取数据,到end结束
Seq[strand:end:step] #step表示步长
默认从右向左切片
切片存在正负索引且与切片的切割顺序无关,顺序由第三个值有关如;(arr[: :1])
作业题
找出列表中的最大值最小值和平均值