这次的问题是得到三个值的中位数(简单)
我这样做了:
(define (med x y z) (car(cdr(x y z)))
Run Code Online (Sandbox Code Playgroud)
它被接受但是在测试时:
(med 3 4 5)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:尝试调用非过程
(2 3 4)
输入字母而不是数字时,我得到:
(md x y z)
Run Code Online (Sandbox Code Playgroud)
错误:未定义杂物
Ý
(包用户)
使用xyz以外的东西我得到:
(md d l m)
Run Code Online (Sandbox Code Playgroud)
错误:未定义的变量
d
(包用户)
这个问题被删除了,不知道怎么回事
写一个返回3个值中值的函数
很抱歉编辑我得到的问题我应该先按顺序放置值,而不仅仅是一个窗台车和cdr的东西,所以我这样做了
33> (define (med x y z)
(if(and(
(<x y) (<y z) y
if(and(
(<y x) (<x z) x z)))))
Warning: invalid expression
(if (and< (<x y) (<y z) y if (and ((<y x) (<x z) x z))))
Run Code Online (Sandbox Code Playgroud)
但正如你所见,我得到一个警告所以什么是wronge?
您可能想要创建一个列表,如下所示:
(define (med x y z) (car(cdr(list x y z)))
Run Code Online (Sandbox Code Playgroud)
但是,将值捆绑到列表中只是为了再次撤消它们似乎是浪费.这会产生同样的效果:
(define (med x y z) y)
Run Code Online (Sandbox Code Playgroud)