二分查找和杨辉三角

确定该期间的中间位置K
(2)将查找的值T与K比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:
K>T 由数组的有序性可知;故新的区间为[T,L[-1]]
K<T 类似上面查找区间为0-T。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。

'''
二分法''' #用递归的方法不断搜索 # L=[1,2,10,30,33,99,101,200,301,311,402,403,500,900,1000] #从小到大排列的数字列表 # # def find(x,y): # k = len(y) # m =k // 2 # print(m) # o = y[m] # print('oooo',o) # if x > o: # y = y[m:] # if len(y) == 2: # exit(y) # find(x,y) # elif x < o: # y = y[:m] # if len(y) == 2: # exit(y) # # find(x,y) # else: # print('找到了') # # find(3,l) # 结果: # [2, 10] # 7 # oooo 200 # 3 # oooo 30 # 1 # oooo 2
生成器的send方法
'''yield from'''
# import time
# def inner():
#     for i in range(5):
#         yield i
#
#
# def quot():
#     g_inner = inner()
#     while True:
#         print(time.time())
#         res =g_inner.send(None)       #在这里的send(None)就是相当于next(g_inner)
#         print('===',res)
#         print(time.time())
#         yield res
#
# q_outer = quot()
# while True:
#     try:
#         print(q_outer.send(None))
#     except StopIteration:
#         break




'''杨辉三角'''
# def triangles(max):
#     L = [1]
#     while True:
#         yield (L)  # generator生成器会存下这个L
#         if len(L) >= max:
#             break
#         L.append(0)  # 注意:每次产生一列的时候,紧接着就是在这一列的后面追加一个0元素以作为新的列的基础
#         L = [L[n - 1] + L[n] for n in range(len(L))]
#
#
# for i in triangles(8):
#     print(i)
原文地址:https://www.cnblogs.com/z18271397173/p/9531771.html