提示是定义一个过程,该过程返回三个数中两个最大数的平方和。
我知道这不是一个优雅的解决方案,但这是我一起入侵的原因:
(define (largest-of-two-sum-of-squares x y z)
(cond ((and (< x y) (< x z)) (sum-of-squares y z))
((and (< y z) (< y x)) (sum-of-squares x z))
((and (< z x) (< z y)) (sum-of-squares x y)))))
我想知道为什么我会收到错误。
;The object 85 is not applicable
单词object后面的数字总是正确的答案,顺便说一下。我是计划初学者,它必须是我的语法中的东西?
由于
答案 0 :(得分:3)
这是另一种可能的解决方案,即使在所有三个数字相等或两个相等且低于另一个的情况下,这个解决方案也适用:
(define (sum-max a b c)
(define (sum x y)
(+ (* x x) (* y y)))
(if (>= a b)
(if (>= b c)
(sum a b)
(sum a c))
(if (>= a c)
(sum b a)
(sum b c))))
答案 1 :(得分:1)
正如sindikat指出的那样,一个多余的结束括号。对于那个很抱歉。
答案 2 :(得分:1)
怎么样?
(define (largest-of-two-sum-of-squares x y z)
(+ (square x) (square y) (square z)
(- (square (min x y z)))))