python基础-递归与二分法
什么是递归
一般换做嵌套函数换做自己执行自己 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)