RosettaCodeData/Task/Binary-search/Common-Lisp/binary-search-2.lisp

13 lines
397 B
Common Lisp
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
(defun binary-search (value array &optional (low 0) (high (1- (length array))))
(if (< high low)
nil
(let ((middle (floor (+ low high) 2)))
(cond ((> (aref array middle) value)
(binary-search value array low (1- middle)))
((< (aref array middle) value)
(binary-search value array (1+ middle) high))
(t middle)))))