什么是递归
一般换做嵌套函数换做自己执行自己
1,必须有一个明确的结束条件
2,每次进入新一层递归时,问题规模比上次递归都应有所减少
3,效率不高,层次过多导致栈溢出
所以,要写递归函数主要逻辑必需不断调用,而遇到if 条件必须终止
用递归实现二分法
# 二分法
data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35]
def search(num,data):
if len(data)>1:
mid_index=int(len(data)/2)
mid_value=data[mid_index]
if num>mid_value:
# num in right
data=data[mid_index:]
search(num,data)
elif num<mid_value:
# num in left
data = data[:mid_index]
search(num, data)
else:
print("find it")
return
else:
if data[0]==num:
print('===>find it', data)
else:
print("no find!")
search(23,data)