图 4.1 包含了一个这么工作的函数。其实这两个函数: bin-search
设置初始范围及发送控制信号给 finder
, finder
寻找向量 vec
内 obj
是否介于 start
及 之间。
如果要找的 range
缩小至一个元素,而如果这个元素是 obj
的话,则 finder
直接返回这个元素,反之返回 nil
。如果 range
大于 1
,我们設置 middle
( 返回离实参最近的整数) 為 obj2
。如果 obj
小于 obj2
,则递归地往向量的左半部寻找。如果 obj
大于 obj2
,则递归地往向量的右半部寻找。剩下的一个选择是 obj=obj2
,在这个情况我们找到要找的元素,直接返回这个元素。
我们可以观察被搜索的元素的数量,是每一步往左减半的: