所以,我现在正在阅读《Land of Lisp》,事实证明 Lisp 与我见过的其他编程语言完全不同。
无论如何,这本书提供了一些我们打算输入到 CLISP REPL 中的代码:
(defparameter *small* 1)
(defparameter *big* 100)
(defun guess-my-number ()
(ash (+ *small* *big*) -1))
(defun smaller ()
(setf *big* (1- (guess-my-number)))
(guess-my-number))
(defun bigger ()
(setf *small* (1+ (guess-my-number)))
(guess-my-number))
现在,基本目标是创建一个猜数字游戏,其中用户/玩家选择一个数字,然后计算机尝试猜数字。它执行“二分搜索”,通过让玩家报告计算机猜测的数字是高于还是低于玩家的号码来找到玩家的号码。
我对这个功能有点困惑ash
。我的理解是这对二分搜索至关重要,但我不确定为什么。这本书在某种程度上解释了它的作用,但它有点令人困惑。
函数有什么ash
作用?为什么它传递了*small*
添加到*big*
和的参数-1
?它是如何工作的?它对二分搜索有什么作用?