第一节
1、时间复杂度
时间复杂度:是用来估计算法运行时间的一个式子(单位)。
一般来说,时间复杂度高的算法比复杂度低的算法慢。
2、空间复杂度
3、递归
递归的两个特点:1、调用自身 2、结束条件
例子:
def func1 (x):
print(x)
func1(x-1)
def func2(x):
if x>0:
print(x)
func2(x+1)
def func3(x):
if x>0:
print(x)
func3(x)
def func4(x):
if x>0:
func4(x-1)
print(x)
func1(6) #无结束条件 ,不是递归
func2(6) #无结束条件 ,不是递归
func3(6) #是递归
func4(6) #是递归
递归实例︰汉诺塔问题
# 汉诺塔问题
# A柱有n个圆盘时,移动次数为2n+1。
def hannuta(n,a,b,c):
if n>0:
hannuta(n-1,a,c,b)
print(f'盘子{n} 从 {a} 到 {c}',)
hannuta(n-1,b,a,c,)
hannuta(3,'A','B','C',)