这是我的问题:
这是我目前的代码:
(define (game low high)
(let ((guess (average low high)))
(cond ((islow? guess) (game (+ guess 1) high))
((ishigh? guess) (game low (- guess 1)))
(else '(Winner!)))))
如何实施islow
和ishigh
?
答案 0 :(得分:1)
您可以执行二进制搜索等操作。
while (true){
response = guess(number);
if(response == true) return "Found it!";
if(response == 'higher'){
number = number+maximum/2;
}
else if(response == 'lower'){
number = number+minimum/2;
}
}
答案 1 :(得分:0)
我可能会误解你的作业 - 如果是的话,请告诉我。
您的功能实际上并不知道正确答案是什么!这可能就是您对islow?
和ishigh?
...
所以我认为你的功能需要做的第一件事就是提出正确的答案,这个答案将是low
和high
之间的数字。您可以使用(random k)
函数执行此操作,该函数选择0到k-1
之间的随机数。第一个问题是弄清楚如何使用它来获得low
和high
之间的数字。
获得answer
后,islow?
和ishigh?
很简单,我认为您不需要为它们制作单独的功能;只需使用>
和<
。
您还需要让用户反复输入一个猜测,对吧?这可能是最容易的,如果现在,你只是说你要创建一个函数get-guess
,它会要求用户输入,然后再计算出来。