1,递归
1,递归的两个特点
- 调用自身
- 结束条件
def func1(x):#没有结束条件,会无限减下去
print(x)
func1(x-1)
def func2(x):#没有结束条件,会无限加下去
if x>0:
print(x)
func2(x+1)
def func3(x):#是递归,打印321
if x>0:
print(x)
func3(x-1)
#先打印后递归
def func4(x):#是递归,打印123
if x>0:
func4(x-1)
print(x)
#先递归后打印
2,汉诺塔问题
n个盘子时:
1,把n-1个圆盘从A经过C移动到B
2,把第n个圆盘从A移动到C
3,把n-1个圆盘从B经过A移动到C
def hanoi(n,a,b,c):
if n>0:
hanoi(n-1,a,c,b)
print('moving from %s to %s'%(a,c))
hanoi(n-1,b,a,c)
hanoi(8,'A','B','C')
2,查找
1,查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
2,列表查找:从列表中查找指定元素
- 输入:列表,待查找元素
- 输出:元素下标(未找到元素返回None)
- 内置列表查找函数:index()
3,列表查找的两个方式:
-
顺序查找:也叫线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一元素为止。
def linear_search(list,value): for index,v in enumerate(li): if v == value: return index else: return None li=[3,4,1,5